写一个程序,先输入图的顶点数和边数,再输入图的各个顶点的编号,然后输入各条边的信息,最后输出图的邻接矩阵
时间: 2024-03-25 11:39:00 浏览: 235
好的,以下是一个 C++ 的程序示例,实现了输入图的顶点数和边数,以及顶点编号和边的信息,并输出了该图的邻接矩阵:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m; // n 表示顶点数,m 表示边数
cout << "请输入图的顶点数和边数:";
cin >> n >> m;
vector<int> vertex(n); // 存储各个顶点的编号
cout << "请输入各个顶点的编号:";
for (int i = 0; i < n; i++) {
cin >> vertex[i];
}
vector<vector<int>> adj_matrix(n, vector<int>(n, 0)); // 存储邻接矩阵
cout << "请输入各条边的信息(起点、终点、边权):" << endl;
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
int u_idx = find(vertex.begin(), vertex.end(), u) - vertex.begin(); // 找到顶点 u 的下标
int v_idx = find(vertex.begin(), vertex.end(), v) - vertex.begin(); // 找到顶点 v 的下标
adj_matrix[u_idx][v_idx] = w; // 在邻接矩阵中标记边的存在
// 如果是无向图,还需要把邻接矩阵对称地标记一遍
// adj_matrix[v_idx][u_idx] = w;
}
cout << "该图的邻接矩阵为:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << adj_matrix[i][j] << ' ';
}
cout << endl;
}
return 0;
}
```
你可以根据自己的需要进行修改,如果有任何问题,欢迎随时向我提问。
阅读全文