c语言实现弗洛伊德算法
时间: 2024-06-19 20:02:58 浏览: 140
弗洛伊德算法是一种用于解决图中所有节点对之间最短路径的动态规划算法。下面提供一份使用C语言实现弗洛伊德算法的代码,以便您进行参考。
```c
#include <stdio.h>
#include <stdlib.h>
#define INF 1000000 // 定义正无穷
int main()
{
int n, m, u, v, w;
scanf("%d%d", &n, &m); // 输入节点数n和边数m
int edge[n + 1][n + 1]; // 定义邻接矩阵存储边权值
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
edge[i][j] = INF; // 初始化所有边权值为正无穷
// 输入每条边的端点和权值,存入邻接矩阵中
for (int i = 1; i <= m; i++)
{
scanf("%d%d%d", &u, &v, &w);
edge[u][v] = w;
}
// 弗洛伊德算法核心代码,计算任意两点之间的最短路径
for (int k = 1; k <= n; k++)
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (edge[i][k] < INF && edge[k][j] < INF && edge[i][j] > edge[i][k] + edge[k][j])
edge[i][j] = edge[i][k] + edge[k][j];
// 输出任意两点之间的最短路径
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (edge[i][j] == INF)
printf("INF ");
else
printf("%d ", edge[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文