无向图统计边的个数pta
时间: 2023-07-23 22:23:23 浏览: 291
对于一个无向图,每条边都是被两个顶点所连接的,因此每条边会被计算两次。因此我们可以先统计每个顶点的度数,然后将度数相加再除以2即可得到边的个数。
具体实现可以使用邻接表来存储图,遍历每个顶点的邻居节点并计数,最后将所有顶点的度数相加再除以2即为边的个数。
以下是一个示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
// 初始化邻接表
vector<vector<int>> adj_list(n + 1);
// 读入边
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj_list[u].push_back(v);
adj_list[v].push_back(u);
}
// 统计度数
int degree_sum = 0;
for (int i = 1; i <= n; i++) {
degree_sum += adj_list[i].size();
}
// 计算边数
int edge_count = degree_sum / 2;
cout << edge_count << endl;
return 0;
}
```
其中,`n` 表示顶点个数,`m` 表示边的个数,邻接表 `adj_list` 存储了每个顶点的邻居节点。遍历邻接表并计算每个顶点的度数,最后将度数相加再除以2即为边的个数。
阅读全文