最短路求助
查看原帖
最短路求助
656427
iamsh楼主2024/5/21 19:48

堆优化dijkstra,邻接矩阵存图,#1、#3、#4 WA了。
很菜,低级错误轻喷

#include<bits/stdc++.h>
#define PII pair<int,int>
using namespace std;
const int N = 2e5 + 5;
int n,m,s,dis[N],vis[N];
vector<PII> g[N];
void dij() {
	priority_queue<PII> q;
	memset(dis,0x3f,sizeof dis);
    dis[s] = 0;
    q.push(make_pair(0,s));
    while(q.size()) {
        int u = q.top().second;
		q.pop();
		if(vis[u]) {
			continue;
		}
		vis[u] = 1;
        for(auto x:g[u]) {
        	int v = x.second,l = x.first;
        	if(dis[v] > dis[u] + l) {
            	dis[v] = dis[u] + l;
          		q.push(make_pair(-dis[v],v));
        	}
		}
    }
}
int main() {
    scanf("%d%d%d",&n,&m,&s);
	for(int i = 1;i <= m;i ++) {
		int u,v,len;
		scanf("%d%d%d",&u,&v,&len);
		g[u].push_back({len,v});
		g[v].push_back({len,u});
	}
    dij();
    for(int i = 1;i <= n;i ++) {
    	printf("%d%c",dis[i]," \n"[i == n]);
	}
    return 0;
}
2024/5/21 19:48
加载中...