40分求助--真真真找不出问题
  • 板块P2078 朋友
  • 楼主啵啵糖Fa
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/7/4 22:26
  • 上次更新2023/11/4 18:38:26
查看原帖
40分求助--真真真找不出问题
484582
啵啵糖Fa楼主2021/7/4 22:26
#include<cstdio>
#include<algorithm>
using namespace std;

int m,n,dad[30005],t,p,q,suma,sumb;

int find(int x){
	if(x!=dad[x])
		dad[x]=find(dad[x]);
	else return x;
	return dad[x];
}

void con(int x,int y){
    x=find(x);
    y=find(y);
    if(x>y) dad[x]=y;
    else dad[y]=x;
}

int cs(int x, int y){
	return find(x)==find(y);
}

int main() {
    scanf("%d %d %d %d",&n,&m,&p,&q);
    for(int k=1;k<=n;++k) dad[k]=k;
    for(int k=1;k<=m;++k) dad[n+k]=n+k;
    for(int i=1;i<=p;++i){
        int x,y;
        scanf("%d %d",&x,&y);
        con(x,y);
    }
    for(int i=1;i<=q;++i){
        int x,y;
        scanf("%d %d",&x,&y);
        con(x*(-1)+n,y*(-1)+n);
    }
    for(int i=1;i<=n;++i){
    	if(dad[i]==1) ++suma;
	}
	for(int i=1;i<=m;++i){
    	if(dad[n+i]==n+1) ++sumb;
	}
	printf("%d",min(suma,sumb));
    return 0;
}

2021/7/4 22:26
加载中...