题意
求单圈环的个数【单圈环就是只有一个圈的环】
思路
观察单圈环的可以发现它的一个性质每个点的度都是2,所以
【方法一】只需要用dfs遍历一下所有连在一起点,查看点的度是不是为2
code
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int maxn=2e5+5;
vector<int> G[maxn];
int vis[maxn];
int n,m;
int ff;
void dfs(int u,int root){
vis[u]=1;
if(G[u].size()!=2) ff=0;
for(auto v:G[u]){
if(v==root || vis[v]) continue;
dfs(v,u);
}
}
int main(){
cin>>n>>m;
int u,v;
int cnt=0;
for(int i=0;i<m;i++){
cin>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
for(int i=1;i<=n;i++){
ff=1;
if(!vis[i]){
dfs(i,-1);
if(ff) cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
学如逆水行舟,不进则退