求助50
  • 板块P2078 朋友
  • 楼主x1489631649
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/19 12:50
  • 上次更新2024/7/19 14:30:11
查看原帖
求助50
780505
x1489631649楼主2024/7/19 12:50
#include <bits/stdc++.h>
using namespace std;
int fa[10005];
int find(int a)
{
	if(a==fa[a])
		return a;
	else return fa[a]=find(fa[a]);
}
void join(int a,int b)
{
	int f1=find(a),f2=find(b);
	if(f1==f2)
		return;
	else fa[f1]=f2;
}
int main()
{
	int	n,m,p,q,x,y,s1=0,s2=0;
	cin>>n>>m>>p>>q;
	for(int i=1;i<=n;i++)
		fa[i]=i;
	for(int i=1;i<=p;i++)
	{
		int x,y;
		cin>>x>>y;
		if(find(x)!=find(y))
			join(x,y);
	}
	for(int i=1;i<=n;i++)
		if(find(i)==find(1))
			s1++;
	for(int i=1;i<=m;i++)
		fa[i]=i;
	for(int i=1;i<=q;i++)
	{
		int x,y;
		cin>>x>>y;
		if(find(-x)!=find(-y))
			join(-x,-y);
	}
	for(int i=1;i<=n;i++)
		if(find(i)==find(1))
			s2++; 
	cout<<min(s1,s2); 
	return 0;
}
2024/7/19 12:50
加载中...