用c++写弗洛伊德算法
时间: 2023-08-04 18:15:16 浏览: 101
好的,以下是C++实现弗洛伊德算法的示例代码:
```c++
#include <iostream>
#include <climits>
using namespace std;
#define V 4 // 图的顶点数
#define INF INT_MAX // 定义无穷大
// 执行弗洛伊德算法的函数
void floyd(int graph[][V]) {
int dist[V][V];
// 初始化dist数组
for(int i = 0; i < V; i++) {
for(int j = 0; j < V; j++) {
dist[i][j] = graph[i][j];
}
}
// 执行弗洛伊德算法
for(int k = 0; k < V; k++) {
for(int i = 0; i < V; i++) {
for(int j = 0; j < V; j++) {
if(dist[i][k] != INF && dist[k][j] != INF && dist[i][j] > dist[i][k] + dist[k][j]) {
dist[i][j] = dist[i][k] + dist[k][j];
}
}
}
}
// 输出最短路径
cout << "最短路径矩阵为:" << endl;
for(int i = 0; i < V; i++) {
for(int j = 0; j < V; j++) {
if(dist[i][j] == INF) {
cout << "INF" << " ";
} else {
cout << dist[i][j] << " ";
}
}
cout << endl;
}
}
int main() {
int graph[V][V] = {
{0, 5, INF, 10},
{INF, 0, 3, INF},
{INF, INF, 0, 1},
{INF, INF, INF, 0}
};
floyd(graph);
return 0;
}
```
这个示例代码中的图是一个有向图,其邻接矩阵存储在graph数组中。运行程序后,将输出最短路径矩阵。
阅读全文