Floyd算法模板

梦想与她 提交于 2020-02-23 01:21:27

hdu2544

#include<cstdio>
using namespace std;
const int N=105;
const int INF=1e5+5;
int n,m,u,v,c,map[N][N];
void floyd(){
 for(int k=1;k<=n;k++ ){
  for(int i=1;i<=n;i++){
   if(map[i][k]!=INF){
    for(int j=1;j<=n;j++){
     if(map[i][j]>map[i][k]+map[k][j]){
      map[i][j]=map[i][k]+map[k][j];
     }
    }
   }
  }
 }
 printf("%d\n",map[1][n]);
}
int main(){
 while(scanf("%d%d",&n,&m),n){
  for(int i=1;i<=n;i++){
   for(int j=1;j<=n;j++){
    map[i][j]=INF;
   }
  } 
  for(int i=1;i<=m;i++){
   scanf("%d%d%d",&u,&v,&c);
   map[u][v]=map[v][u]=c;
  }
  floyd();
 }
 return 0;
} 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!