听惯多
  • 板块灌水区
  • 楼主sunhaozhe111022
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/13 13:37
  • 上次更新2024/12/13 19:53:28
查看原帖
听惯多
995215
sunhaozhe111022楼主2024/12/13 13:37

P2078 20pts 闭关

#include<bits/stdc++.h>
using namespace std;
int n,m,p,q,a,b,f[20005],f2[20005],sum,sum1;
int find(int x)
{
	if(f[x]==x) return x;
	return f[x]=find(f[x]);
}
int find2(int x)
{
	if(f2[x]==x) return x;
	return f2[x]=find(f2[x]);
}
void bin(int x,int y)
{
	f[find(x)]=find(y);
}
void bin2(int x,int y)
{
	f2[find2(x)]=find2(y);
}
int main()
{
	cin>>n>>m>>p>>q;
	for(int i=1;i<=n;i++)
	f[i]=i;
	for(int i=1;i<=m;i++)
	f2[i]=i;
	for(int i=1;i<=p;i++)
	{
		cin>>a>>b;
		bin(a,b);
	}
	for(int i=1;i<=q;i++)
	{
		cin>>a>>b;
		bin2(abs(a),abs(b));
	}
	int k=find(1);
	for(int i=2;i<=n;i++)
	{
		if(find(i)==k) sum++;
	}
	int kk=find2(1);
	for(int i=2;i<=m;i++)
	{
		if(find2(i)==kk) sum1++;
	}
	cout<<min(sum,sum1)+1;
	return 0;
}
2024/12/13 13:37
加载中...