全部评论 2

  • good!

    2025-10-25 来自 江苏

    1
  • void spfa(){
    queue<int> q;
    memset(d,1e6,sizeof d);
    memset(vis,false,sizeof vis);
    d[s] = 0;
    vis[s] = 1;
    q.push(s);

    while (q.size()) {
    	int u = q.front(); 
    	q.pop();
    	vis[u] = 0;	//注意, 拿出来的下次可以继续走 
    	//枚举终点,更新距离 
    	for (int i=1; i<=n; i++) {
    		if (d[i] > d[u] + g[u][i]){
    			d[i] = d[u] + g[u][i]; 	//松弛,更新最短路
    			if (vis[i] == 0){
    				vis[i] = 1; //标记已经走过
    				q.push(i); 
    			} 
    		} 
    	}
    }
    

    }

    2025-11-29 来自 江苏

    0

热门讨论