这一题30pts的部分分是怎么写的有人愿意分享一下思路和代码嘛
查看原帖
这一题30pts的部分分是怎么写的有人愿意分享一下思路和代码嘛
333800
qip101楼主2022/10/25 22:30

这是我考场的部分分,可能哪里出问题了

#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;
}
2022/10/25 22:30
加载中...