mle20分求助
  • 板块P2078 朋友
  • 楼主IANYEYZ
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/25 18:29
  • 上次更新2023/10/27 18:27:48
查看原帖
mle20分求助
579702
IANYEYZ楼主2022/7/25 18:29

rt

#include<iostream>
using namespace std;
int fa1[10010],fa2[10010],n,m,p,q,x,y,cnt1,cnt2;
int find1(int x)
{
	return x == fa1[x]?x:fa1[x] = find1(fa1[x]);
}
int find2(int x)
{
	return x == fa2[x]?x:fa2[x] = find2(fa2[x]);
}
int main()
{
	cin>>n>>m>>p>>q;
	for(int i = 1;i <= n;i++)
	{
		fa1[i] = i;
	}
	for(int i = 1;i <= m;i++)
	{
		fa2[i] = i;
	}
	for(int i = 1;i <= p;i++)
	{
		cin>>x>>y;
		fa1[find1(x)] = y;
	}
	for(int i = 1;i <= q;i++)
	{
		cin>>x>>y;
		x = -x;
		y = -y;
		fa2[find2(x)] = y;
	}
	int f11 = find1(1),f21 = find2(1);
	for(int i = 1;i <= n;i++)
	{
		//cout<<find1(i)<<" ";
		if(find1(i) == f11)
		{
			cnt1++;
		}
	}
	for(int i = 1;i <= m;i++)
	{
		if(find2(i) == f21)
		{
			cnt2++;
		}
	}
	cout<<min(cnt1,cnt2);
}
2022/7/25 18:29
加载中...