安装有vc6.0的计算机写程序实现图的邻接矩阵存储
时间: 2023-07-16 11:13:22 浏览: 51
以下是C++代码实现图的邻接矩阵存储:
```cpp
#include<iostream>
using namespace std;
const int MAXV = 100; // 最大顶点数
const int INF = 0x3f3f3f3f; // 无穷大
int graph[MAXV][MAXV]; // 邻接矩阵存储图
int V, E; // 顶点数和边数
// 初始化邻接矩阵
void init() {
for(int i = 0; i < MAXV; i++) {
for(int j = 0; j < MAXV; j++) {
if(i == j) graph[i][j] = 0; // 自己到自己的距离为0
else graph[i][j] = INF; // 初始距离为无穷大
}
}
}
// 添加边
void addEdge(int u, int v, int w) {
graph[u][v] = w;
graph[v][u] = w; // 若是无向图,还需添加反向边
}
// Floyd算法求任意两点之间的最短距离
void floyd() {
for(int k = 1; k <= V; k++) {
for(int i = 1; i <= V; i++) {
for(int j = 1; j <= V; 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() {
cin >> V >> E; // 输入顶点数和边数
init(); // 初始化邻接矩阵
for(int i = 1; i <= E; i++) {
int u, v, w;
cin >> u >> v >> w; // 输入边的起点、终点和边权
addEdge(u, v, w); // 添加边
}
floyd(); // 求任意两点之间的最短距离
// 输出任意两点之间的最短距离
for(int i = 1; i <= V; i++) {
for(int j = 1; j <= V; j++) {
if(graph[i][j] != INF) cout << graph[i][j] << " ";
else cout << "INF ";
}
cout << endl;
}
return 0;
}
```
其中,`graph[i][j]` 表示顶点 `i` 到顶点 `j` 的距离,若不存在边则初始距离为无穷大。`addEdge` 函数用于添加边,`floyd` 函数用于求任意两点之间的最短距离。