请用C语言实现弗洛伊德算法即求图的单源最短路径
时间: 2024-05-01 22:17:53 浏览: 92
C语言实现图的最短路径Floyd算法
5星 · 资源好评率100%
好的,下面是用C语言实现弗洛伊德算法的代码:
```c
#include <stdio.h>
#define INF 0x3f3f3f3f //定义正无穷
int min(int a, int b)
{
return a < b ? a : b;
}
void floyd(int graph[][4], int n)
{
int dist[n][n], i, j, k; //dist用于存储最短路径
//初始化dist数组
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
dist[i][j] = graph[i][j];
//使用floyd算法更新dist数组
for(k = 0; k < n; k++)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}
}
}
//输出最短路径
printf("The shortest distances between every pair of vertices are:\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(dist[i][j] == INF)
{
printf("INF ");
}
else
{
printf("%d ", dist[i][j]);
}
}
printf("\n");
}
}
int main()
{
int graph[4][4] = {{0, 5, INF, 10},
{INF, 0, 3, INF},
{INF, INF, 0, 1},
{INF, INF, INF, 0}};
floyd(graph, 4); //调用floyd函数
return 0;
}
```
以上就是用C语言实现弗洛伊德算法的代码,可以求图的单源最短路径。
阅读全文