hdu-1874 畅通工程续 最短路径问题

来源:互联网 发布:游泳减肥 知乎 编辑:程序博客网 时间:2024/06/11 08:25
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
弗洛伊德最短路径问题代码:#include<stdio.h>#include<string.h>#define inf 0x3f3f3f3f#include<algorithm>using namespace std;int map[300][1010];int main(){    int i,j,k,t;    int n,m,a,b,value,start,end;    while(~scanf("%d %d",&n,&m)){      for(i=0;i<n;i++)        for(j=0;j<n;j++)           map[i][j]=inf;       for(i=0;i<m;i++){          scanf("%d %d %d",&a,&b,&value);                          if(map[a][b]>value)             map[a][b]=map[b][a]=value;       }                            for(k=0;k<n;k++){           for(i=0;i<n;i++){              for(j=0;j<m;j++)                                 map[i][j]=min(map[i][j],map[i][k]+map[k][j]);           }                        }                     scanf("%d %d",&start,&end);       if(start==end)          printf("0\n");       else if(map[start][end]==inf)          printf("-1\n");       else          printf("%d\n",map[start][end]);}return 0;    }

0 0