图的度序列C++算法
时间: 2023-11-10 15:08:58 浏览: 80
C++算法-图算法
图的度序列指的是图中每个节点的度数(即与该节点相连的边数)构成的序列,可以用来研究图的结构和性质。下面是一段实现度序列的 C++ 代码:
```
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 100;
int n, m; // n 表示节点数,m 表示边数
vector<int> G[MAXN]; // 存储图的邻接表
int deg[MAXN]; // 存储每个节点的度数
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
for (int i = 1; i <= n; i++) {
deg[i] = G[i].size();
}
for (int i = 1; i <= n; i++) {
cout << deg[i] << " ";
}
cout << endl;
return 0;
}
```
首先读入节点数和边数,接着读入每条边的两个端点,并将它们加入对应节点的邻接表中。在这个过程中,我们可以顺便计算出每个节点的度数。最后遍历一遍所有节点,输出它们的度数即可。
需要注意的是,由于这个算法使用了邻接表存储图,所以时间复杂度为 $O(m+n)$,其中 $m$ 表示边数,$n$ 表示节点数。如果使用邻接矩阵存储图,则时间复杂度为 $O(n^2)$,因为需要遍历整个邻接矩阵统计每个节点的度数。
阅读全文