spfa+vector

来源:互联网 发布:船舶电气考试软件 编辑:程序博客网 时间:2024/06/15 19:29
#include<iostream>#include<cstdio>#include<vector>#include<map>#include<cmath>#include<cstring>#include<algorithm>const int maxn=10000+10,inf=1000000000;using namespace std;struct node{int to,z;};int p[maxn],d[maxn];vector<node>e[maxn];int q[maxn*100];int main(){int i,j,k,m,n,s;cin>>n>>m>>s;for(i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);node t;t.to=y;t.z=z;e[x].push_back(t);}for(i=1;i<=n;i++)d[i]=inf;d[s]=0;q[1]=s;p[s]=1;int f=0,l=1;while(f<l){f++;int x=q[f];for(i=0;i<e[x].size();i++){int u=e[x][i].to,v=e[x][i].z;if(d[u]>d[x]+v){d[u]=d[x]+v;if(!p[u]){q[++l]=u;p[u]=1;}}}p[x]=0;}for(i=1;i<=n;i++)if(d[i]<inf)printf("%d ",d[i]);else printf("2147483647 ");return 0;}

原创粉丝点击