专栏文章
题解:AT_abc404_c [ABC404C] Cycle Graph?
AT_abc404_c题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mipde7up
- 此快照首次捕获于
- 2025/12/03 10:10 3 个月前
- 此快照最后确认于
- 2025/12/03 10:10 3 个月前
题目大意
有 个点与 条边,让你求它是不是有且仅有一个的循环图。
思路
- 首先判断图是否联通,如果不连通就不符合题意,无解。
- 其次考虑 个点是不是组成了一个环,我们只需要判断每个点的度数是否都为 ,因为如果一个点的度数为 ,肯定不在环里,度数大于 ,则一定不能只组成一个环。
Code
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int du[N];
int f[N];
int find(int x){
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
/*
1. 判断给定图,是否联通 dfs 并查集
2. 判断每个点的度数是不是2
*/
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++) f[i] = i;
for(int i = 1; i <= m; i++){
int u, v;
cin >> u >> v;
int fu = find(u), fv = find(v);
f[fu] = fv;
du[u]++;
du[v]++;
}
for(int i = 1; i <= n; i++){
if(find(i) != find(1) || du[i] != 2){
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...