c语言floyd算法
时间: 2023-12-02 16:40:39 浏览: 70
以下是C语言实现Floyd算法的代码:
```c
#include <stdio.h>
#define INF 0x3f3f3f3f // 定义正无穷
int main() {
int n, m;
scanf("%d%d", &n, &m); // 输入顶点数和边数
int dis[n+1][n+1]; // 存储任意两点之间的最短距离
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j) dis[i][j] = 0; // 自己到自己的距离为0
else dis[i][j] = INF; // 初始化为正无穷
}
}
for (int i = 1; i <= m; i++) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w); // 输入边的起点、终点和权值
dis[u][v] = w; // 存储边的权值
}
// Floyd算法核心代码
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (dis[i][k] < INF && dis[k][j] < INF && dis[i][j] > dis[i][k] + dis[k][j]) {
dis[i][j] = dis[i][k] + dis[k][j];
}
}
}
}
// 输出任意两点之间的最短距离
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
printf("%d ", dis[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文