70分(#7#8#10WA)求助
  • 板块P2078 朋友
  • 楼主LYS_Lewis
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/15 15:12
  • 上次更新2023/10/27 02:53:25
查看原帖
70分(#7#8#10WA)求助
805192
LYS_Lewis楼主2022/11/15 15:12
#include<bits/stdc++.h>
using namespace std;

int n,m,p,q,G[100100],B[100100],sumG = 0,sumB = 0,a,b;

int f1(int k){
	if(B[k]==k)	return k;
	else		return B[k] = f1(B[k]);
}

void U1(int x,int y){
	int u = f1(x);
	int v = f1(y);
	if(u==v)	return;
	if(u>v)	B[u] = v;
	else	B[v] = u;
}

int f2(int k){
	if(G[k]==k)	return k;
	else		return G[k] = f2(G[k]);
}

void U2(int x,int y){
	int u = f2(x);
	int v = f2(y);
	if(u==v)	return;
	if(u>v)	G[u] = v;
	else	G[v] = u;
}

int main(){
	cin>>n>>m>>p>>q;
	for(int i = 0;i<=10010;i++){
		B[i] = i;
	}
	for(int i = 1;i<=p;i++){
		cin>>a>>b;
		U1(a,b);
	}
	for(int i = 0;i<=10010;i++){
		G[i] = i;
	}
	for(int i = 1;i<=q;i++){
		cin>>a>>b;
		U2(-a,-b);
	}
	for(int i = 1;i<=p;i++){
		if(f1(B[i])==1)	sumB++;
	}
	sumG=0;
	for(int i = 1;i<=q;i++){
		if(f2(G[i])==1) sumG++;
	}
	cout<<min(sumB,sumG);
	return 0;
}
2022/11/15 15:12
加载中...