C语言实现floyd算法代码
时间: 2023-10-26 10:09:24 浏览: 88
以下是C语言实现Floyd算法的代码:
```c
#include <stdio.h>
#define INF 9999 //定义无穷大
void floyd(int n, int graph[][n]) {
int dist[n][n], i, j, k;
//初始化距离数组
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
dist[i][j] = graph[i][j];
}
}
//Floyd算法
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];
}
}
}
}
//输出最短路径
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
if(dist[i][j] == INF) {
printf("INF\t");
}
else {
printf("%d\t", dist[i][j]);
}
}
printf("\n");
}
}
int main() {
int n, i, j;
printf("请输入顶点数:");
scanf("%d", &n);
int graph[n][n];
printf("请输入邻接矩阵:\n");
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
scanf("%d", &graph[i][j]);
if(graph[i][j] == 0 && i != j) {
graph[i][j] = INF; //将没有直接连接的节点赋值为无穷大
}
}
}
floyd(n, graph);
return 0;
}
```
该代码实现了Floyd算法,可以通过输入邻接矩阵来计算任意两点之间的最短路径,并输出结果。
阅读全文