这是我考场的部分分,可能哪里出问题了
#include <bits/stdc++.h>
#define MAXN 100100
using namespace std;
int n,m,fa[MAXN];
vector <int> G[MAXN];
bool vis[MAXN];
void add(int u,int v)
{
G[u].push_back(v);
G[v].push_back(u);
}
int find(int x)
{
if(x==fa[x])
return x;
else
return find(fa[x]);
}
void Union(int u,int v)
{
fa[find(u)]=find(v);
}
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
int u,v;
cin >> u >> v;
Union(u,v);
add(u,v);
}
int count=0,ans=0;
for(int i=1;i<=n;i++)
if(fa[i]==i)
count++;
for(int i=1;i<=n;i++)
if(G[i].size()==2)
ans++;
cout << ans-1 << endl;
return 0;
}