#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 多源最短路径
最新推荐文章于 2025-02-08 18:33:44 发布
本文介绍了一个基于Floyd算法实现的最短路径查找程序。通过初始化矩阵并读取顶点数和边数,程序构建了一个图的数据结构。接着,程序利用Floyd算法计算了任意两点间的最短路径,并最终输出了所有顶点对之间的最短路径长度。

3万+

被折叠的 条评论
为什么被折叠?



