Floyd算法C++代码
时间: 2023-07-05 17:24:20 浏览: 92
以下是Floyd算法的C++代码实现,可以求解任意两点之间的最短路径:
```c++
const int INF = 1000000000; // 无穷大
int graph[MAX_N][MAX_N]; // 图的邻接矩阵
int dist[MAX_N][MAX_N]; // 任意两点之间的最短路径长度
void floyd(int n) {
// 初始化任意两点之间的最短路径长度
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
if (i == j) {
dist[i][j] = 0;
} else if (graph[i][j]) {
dist[i][j] = graph[i][j];
} else {
dist[i][j] = INF;
}
}
}
// 求解任意两点之间的最短路径长度
for (int k = 1; k <= n; ++k) {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}
}
}
}
```
其中,`MAX_N`是顶点个数的最大值,`graph[i][j]`表示顶点i到顶点j之间有一条边,`dist[i][j]`表示顶点i到顶点j之间的最短路径长度。代码中使用了三重循环,时间复杂度为O(n^3),空间复杂度为O(n^2),适用于顶点个数较少的图。
阅读全文