Dij WA on #7#8
查看原帖
Dij WA on #7#8
422996
HeCao2008楼主2022/12/28 13:17
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=500010;
int n,m,s,cnt;
int dist[maxn],to[maxn],head[maxn],val[maxn],nxt[maxn];
const int _infinity =1ll<<62;
struct node{
	int dis,dian;
	bool operator < (const node &x) const {
	    return x.dis<dis;
	}
};
priority_queue < node > q;
bool visit[maxn];
void cun(int u,int v,int w){
	to[++cnt]=v;
	val[cnt]=w;
	nxt[cnt]=head[u];
	head[u]=cnt;
} 
void dijkstra(){
	for(int i=0;i<=n;i++)dist[i]=_infinity;
	dist[s]=0;
	q.push((node){0,s});
	while(!q.empty()){
		int u=q.top().dian;
		q.pop();
		if(visit[u]) continue;
		visit[u]=true;
		for(int i=head[u];i;i=nxt[i]){
			if(dist[to[i]]>dist[u]+val[i]){
				dist[to[i]]=dist[u]+val[i];
				q.push((node){dist[to[i]],to[i]});
			}
		}
	}
}
signed main(){
	scanf("%d%d",&n,&m);
	s=1; 
	for(int i=1;i<=m;i++){
		int u,v,w;
		scanf("%d%d%d",&u,&v,&w);
		cun(u,v,w);
	}
	dijkstra();
	for(int i=1;i<=n;i++){
		if(dist[i]==_infinity)printf("-1 ");
		else printf("%d ",dist[i]);
	}
	return 0;
}

我看到别的人说设成 21474836472147483647 会挂掉,所以我这个为什么挂了

2022/12/28 13:17
加载中...