c++键盘输入有向图的边信息
时间: 2023-06-19 18:07:24 浏览: 124
可以使用邻接矩阵或邻接表来表示有向图的边信息。以下是使用邻接矩阵的示例代码:
```c++
#include <iostream>
using namespace std;
const int MAXN = 100; // 最大顶点数
int graph[MAXN][MAXN]; // 邻接矩阵
int main() {
int n, m; // n 个顶点,m 条边
cin >> n >> m;
// 初始化邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
graph[i][j] = 0;
}
}
// 读入边信息
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u][v] = 1; // u->v 的边权为 1
}
// 输出邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << graph[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
以上代码中,我们首先读入有向图的顶点数和边数,然后使用邻接矩阵存储有向图的边信息。读入边信息时,对于每条从 u 到 v 的有向边,我们将邻接矩阵中 u 行 v 列的元素赋值为 1。最后输出邻接矩阵即可。
如果使用邻接表来表示有向图,可以定义一个数组,每个元素是一个链表,链表中存储该顶点的所有出边。以下是使用邻接表的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 100; // 最大顶点数
vector<int> graph[MAXN]; // 邻接表
int main() {
int n, m; // n 个顶点,m 条边
cin >> n >> m;
// 初始化邻接表
for (int i = 0; i < n; i++) {
graph[i].clear();
}
// 读入边信息
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u].push_back(v); // u->v 的边
}
// 输出邻接表
for (int i = 0; i < n; i++) {
cout << i << ": ";
for (int j = 0; j < graph[i].size(); j++) {
cout << graph[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
以上代码中,我们首先读入有向图的顶点数和边数,然后使用邻接表存储有向图的边信息。读入边信息时,对于每条从 u 到 v 的有向边,我们将 v 加入到邻接表中 u 对应的链表中。最后输出邻接表即可。
阅读全文