你能用c++给我一个floyd算法的模板吗
时间: 2023-05-12 09:07:11 浏览: 65
当然可以,以下是一个基本的 Floyd 算法的 C 语言模板:
```c
#include <stdio.h>
#include <limits.h>
#define MAX_VERTICES 100
#define INF INT_MAX
int graph[MAX_VERTICES][MAX_VERTICES];
int n; // 图中顶点的数量
void floyd() {
int i, j, k;
for (k = 0; k < n; k++) {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (graph[i][k] != INF && graph[k][j] != INF && graph[i][j] > graph[i][k] + graph[k][j]) {
graph[i][j] = graph[i][k] + graph[k][j];
}
}
}
}
}
int main() {
// 初始化图
// ...
floyd();
// 输出所有顶点之间的最短路径
// ...
return 0;
}
```
其中,`graph` 数组表示图的邻接矩阵,`n` 表示图中顶点的数量。在 `floyd` 函数中,使用三重循环遍历所有顶点,更新它们之间的最短路径。最后,可以输出所有顶点之间的最短路径。