SPFA求助40pts
查看原帖
SPFA求助40pts
238000
GossWandering楼主2020/8/13 21:18

AC:5;TLE:4;WA:1\text{AC:5;TLE:4;WA:1}

具体测评结果看

代码:

#include<bits/stdc++.h>
int n,m,s,Edgecnt;
int head[10010],edge[10010];
int nxt[500010],to[500010];
int dis[10010],f[10010];
queue<int> q;
void add(int u,int v,int w){
	Edgecnt++;
	to[Edgecnt]=v,edge[Edgecnt]=w;
	nxt[Edgecnt]=head[u],head[u]=Edgecnt;
}
void spfa(){
	dis[s]=0;f[s]=1;q.push(s);
	while(!q.empty()){
		int x=q.front();q.pop();
		v[x]=0;
		for(int i=head[x];i;i=nxt[i]){
			int tmp=to[i],val=edge[i];
			if(dis[tmp]+val<dis[x]){
				dis[x]=dis[tmp]+val;
				if(!vis[tmp]){
					q.push(y);
					v[y]=1;
				}
			}
		}
	}
}
int main(){
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		int from,to,val;
		cin>>from>>to>>val;
		add(from,to,val);
	}
	spfa();
	for(int i=1;i<=n;i++) cout<<dis[i]<<endl;
	return 0;
}

Thx

2020/8/13 21:18
加载中...