spfa+vector

来源:互联网 发布:淘宝大促时间表2016 编辑:程序博客网 时间:2024/06/03 23:39
#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;}
原创粉丝点击