邻接表创建无向图 分数 30 作者 王东 单位 贵州师范学院 采用邻接表创建无向图G ,依次输出各顶点的度。 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。 输入第二行为顶点的信息,每个顶点只能用一个字符表示。 依次输入j行,每行输入一条边依附的顶点。 输出格式: 依次输出各顶点的度,行末没有最后的空格。
时间: 2024-02-12 12:02:50 浏览: 88
以下是一个可能的C++代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Node {
char val;
int degree;
vector<int> neighbors;
};
int main() {
int n, m;
cin >> n >> m;
vector<Node> graph(n);
for (int i = 0; i < n; i++) {
cin >> graph[i].val;
graph[i].degree = 0;
}
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u].neighbors.push_back(v);
graph[v].neighbors.push_back(u);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < graph[i].neighbors.size(); j++) {
graph[i].degree++;
}
cout << graph[i].degree << endl;
}
return 0;
}
```
首先,我们定义了一个结构体 `Node`,它包含了一个顶点的值、度和相邻顶点列表。然后,我们读入顶点数和边数,并且创建了一个大小为 `n` 的邻接表 `graph`,每个顶点的度被初始化为0。
接下来,我们读入每条边的两个顶点,并且将这些信息存入邻接表中。注意到这是一个无向图,所以我们需要将每条边的两个顶点都加入到对方的相邻顶点列表中。
最后,我们遍历每个顶点,并且统计它的度。具体来说,对于每个顶点,我们遍历它的相邻顶点列表,每有一个相邻顶点,就将该顶点的度加1。最后,我们输出每个顶点的度即可。
阅读全文