spfa 40求大佬改一改
查看原帖
spfa 40求大佬改一改
181715
gjh303987897楼主2021/11/9 19:31
//spfa
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
#define INF 2147483647
using namespace std;
struct node{
	int to,next,w;
}t[1000001];
int head[500005],js,vis[500005];
long long dis[500005]; 
inline void add(int u,int v,int w){
	t[++js].next=head[u];
	t[js].to=v; t[js].w=w;
	head[u]=js;
}
queue<int>q;
int n,m,s;
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
	} 
	for(int i=1;i<=n;i++) dis[i]=INF;
	dis[s]=0; q.push(s); vis[s]=1;
	while(q.size()!=0){
		int x=q.front(); q.pop(); vis[x]=0;
		for(int i=head[x];i;i=t[i].next){
			if(dis[t[i].to]>dis[x]+t[i].w){
				dis[t[i].to]=dis[x]+t[i].w;
				if(vis[t[i].to]!=1){
					q.push(t[i].to); vis[i]=1;
				}
			}
		}
	} 
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<" ";
	}
	return 0;
 } 
2021/11/9 19:31
加载中...