E - Cyclic Components
#include <iostream> #include <bits/stdc++.h> using namespace std; #define maxn 200005 bool a[maxn]; int n; vector<int>gra[maxn]; vector<int>w[maxn]; void dfs(int x,int cnt) { a[x]=1; w[cnt].push_back(x); for(int q=0; q<gra[x].size(); q++) if(!a[gra[x][q]]) dfs(gra[x][q],cnt); } int main() { int m,u,v,ans=0,sum=0; cin>>n>>m; memset(a,0,sizeof(a)); while(m--) { cin>>u>>v; gra[u].push_back(v); gra[v].push_back(u); } for(int i=1; i<=n; i++) if(a[i]==0) { dfs(i,ans); ans++; } bool flag; for(int i=0; i<ans; i++) { flag=1; for(int j=0; j<w[i].size(); j++) { if(gra[w[i][j]].size()!=2) { flag=0; break; } } if(flag) sum++; } cout<<sum<<endl; return 0; }