请用c语言编程实现Floyd算法
时间: 2023-09-28 18:11:03 浏览: 112
以下是用C语言实现Floyd算法的示例代码:
```c
#include <stdio.h>
#define INFINITY 99999
#define MAXSIZE 100
void floyd(int n, int dist[MAXSIZE][MAXSIZE]) {
int i, j, k;
for (k = 0; k < n; k++) {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (dist[i][j] > dist[i][k] + dist[k][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
}
int main() {
int n, i, j;
int dist[MAXSIZE][MAXSIZE];
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &dist[i][j]);
if (dist[i][j] == -1) {
dist[i][j] = INFINITY;
}
}
}
floyd(n, dist);
printf("The shortest path matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (dist[i][j] == INFINITY) {
printf("INF ");
} else {
printf("%d ", dist[i][j]);
}
}
printf("\n");
}
return 0;
}
```
在这个示例代码中,我们定义了一个 `floyd` 函数来实现Floyd算法。我们还定义了一个 `dist` 数组来存储图的邻接矩阵表示。在 `main` 函数中,我们首先读入图的大小和邻接矩阵,将 `-1` 视为无穷大。然后我们调用 `floyd` 函数来计算所有节点之间的最短路径,并输出结果。
阅读全文