re32pts求助C++ orz
查看原帖
re32pts求助C++ orz
772909
Lovely_CCCyh___楼主2022/11/10 21:19
#include<bits/stdc++.h>
#define long long ll
using namespace std;
int pre[100005],num[100005];
int find(int x)
{
	if(pre[x]==x) return x;
	return pre[x]=find(pre[x]);
}
void join(int x,int y)
{
	int fx=find(x);
	int fy=find(y);
	if(fx!=fy)
	{
		if(num[fx]>num[fy])
		{
			pre[fy]=fx;
			num[fx]+=num[fy];
		}
		else
		{
			pre[fx]=fy;
			num[fy]+=num[fx];
		}
	} 
	return ;
}
int main()
{
	int m,n,k,x,y;
	cin>>m>>n>>k;
	int z=m*n;
	for(int i=1;i<=z;i++)
	{
		pre[i]=i;
		num[i]=1;
	}
	for(int i=1;i<=k;i++)
	{
		cin>>x>>y;
		join(x,y);
	}
	int ans=0;
	for(int i=1;i<=z;i++)
		if(pre[i]==i) ans++;
	cout<<ans<<endl;
	return 0;
}

2022/11/10 21:19
加载中...