Floyd算法 最短路径

#include <iostream>
using namespace std;
const int INF=99999;
int main()
{
  //读入数据的过程和dfs没什么区别,就不讲解了 
    int i,j,n,m,k,a,b,c;
    int dist[105][105];
    cin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(i==j)    dist[i][j]=0;  
                else    dist[i][j]=INF;  
 
            for(i=1;i<=m;i++)
            {
                cin>>a>>b>>c;
                dist[a][b]=c;
            }
 
     //核心代码
     for(k=1;k<=n;k++)
         for(i=1;i<=n;i++)
             for(j=1;j<=n;j++)
                if(dist[i][k]+dist[k][j]<dist[i][j])
                     dist[i][j]=dist[i][k]+dist[k][j]; 
    
     for (i=1;i<=n;i++){
       for(j=1;j<=n;j++){
         cout<<dist[i][j]<<"\t";
     }
     cout<<endl;
   }
 
        return 0;
}

 

posted @ 2022-02-04 23:37  九点的日落  阅读(35)  评论(0)    收藏  举报