用c++写有一个邻接表存储的图G,分别设计实现以下要求的算法:求出图中每个顶点的出度;计算图中出度为0的顶点数
时间: 2024-03-05 18:53:31 浏览: 68
以下是C++代码实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 定义邻接表存储的图
int n = 5; // 图的顶点数
vector<vector<int>> G(n, vector<int>());
G[0].push_back(1); // 添加边
G[0].push_back(2);
G[1].push_back(3);
G[2].push_back(1);
G[2].push_back(3);
G[3].push_back(4);
G[4].push_back(2);
// 求出每个顶点的出度
vector<int> outdegree(n, 0);
for (int i = 0; i < n; i++) {
outdegree[i] = G[i].size();
}
cout << "每个顶点的出度为:";
for (int i = 0; i < n; i++) {
cout << outdegree[i] << " ";
}
cout << endl;
// 计算出度为0的顶点数
int cnt = 0;
for (int i = 0; i < n; i++) {
if (outdegree[i] == 0) {
cnt++;
}
}
cout << "出度为0的顶点数为:" << cnt << endl;
return 0;
}
```
上述代码中,首先定义了一个邻接表存储的图,然后用一个二维数组 G 来表示,其中 G[i] 表示节点 i 的所有邻居节点。接着,定义一个长度为 n 的一维数组 outdegree,用来存储每个顶点的出度。遍历邻接表,求出每个节点的出度。最后,再遍历一遍 outdegree 数组,计算出度为0的顶点数。
阅读全文