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

题目链接: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;    
}

你可能感兴趣的:(hdu-1874 畅通工程续 最短路径问题)