#include <iostream>
using namespace std;
int main(){
int a[100][100];
int n, m;//n个顶点,m条边
const int INF = 0x3f3f3f3f;
cin>>n>>m;
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(i == j){
a[i][j] = 0;
}else {
a[i][j] = INF;
}
}
}
int tx, ty, d;
for(int i=1; i<=m; i++){
cin>>tx>>ty>>d;
a[tx][ty] = d;
}
//Floyd核心算法
for(int k=1; k<=n; k++){
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(a[i][j] > a[i][k]+a[k][j]){
a[i][j] = a[i][k]+a[k][j];
}
}
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
Floyd 多源最短路径
最新推荐文章于 2024-05-22 13:02:54 发布