spfa

来源:互联网 发布:网络强国是哪几个 编辑:程序博客网 时间:2024/06/07 01:59
    #include<stdio.h>      #include<string.h>      #include<stdlib.h>      const int maxn=100,INF=1000000000;      int a[maxn][maxn],p[maxn],d[maxn],q[maxn*maxn];      int main(){           int i,j,k,m,n;          int x,y,z;          scanf("%d%d",&n,&m);          for(i=1;i<=m;i++){              scanf("%d%d%d",&x,&y,&z);              a[x][y]=z;                }             for(i=1;i<=n;i++)d[i]=INF;          d[1]=0;          q[1]=1;          p[1]=1;          int f=0,l=1;a[1][3]=INF;          while(f<l){              f++;k=q[f];              for(i=1;i<=n;i++)                  if(a[k][i] && d[i]>d[k]+a[k][i]){                      d[i]=d[k]+a[k][i];                      if(!p[i]){                          q[++l]=i;                          p[i]=1;                      }                                 }                 p[k]=0;          }          printf("%d ",d[n]);          return 0;      }   /* 5 61 2 51 3 91 4 13 5 24 3 34 5 76*/           

0 0
原创粉丝点击