spfa+vector

#include
#include
#include
#include
#include
#include
#include
const int maxn=10000+10,inf=1000000000;
using namespace std;
struct node{int to,z;};
int p[maxn],d[maxn];
vectore[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(fint x=q[f];
        for(i=0;iint 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]printf("%d ",d[i]);
        else printf("2147483647 ");
    return 0;
}

你可能感兴趣的:(spfa+vector)