弗洛伊德算法代码c++
时间: 2023-05-11 10:01:45 浏览: 131
以下是一个简单的弗洛伊德算法的 C 代码实现:
```c
#define INF 99999
void floyd(int graph[][V]) {
int dist[V][V], i, j, k;
// 初始化距离矩阵
for (i = 0; i < V; i++)
for (j = 0; j < V; j++)
dist[i][j] = graph[i][j];
// 通过中间顶点更新距离矩阵
for (k = 0; k < V; k++) {
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
if (dist[i][k] + dist[k][j] < dist[i][j])
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
// 打印最短路径矩阵
printf ("The following matrix shows the shortest distances between every pair of vertices \n");
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
if (dist[i][j] == INF)
printf("%7s", "INF");
else
printf ("%7d", dist[i][j]);
}
printf("\n");
}
}
```
其中,`graph` 是一个二维数组,表示图的邻接矩阵;`V` 是图的顶点数。该算法的时间复杂度为 O(V^3)。
阅读全文