社区讨论

求破70

P2078朋友参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi6gtv7e
此快照首次捕获于
2025/11/20 04:39
4 个月前
此快照最后确认于
2025/11/20 04:39
4 个月前
查看原帖
CPP
#include<iostream>
#include<cstdio>
#include<cmath>
#define maxn 1000001
using namespace std;
int f1[maxn],f2[maxn];
int n,m,p,q,sum1,sum2;
int find1(int x)
{
    if(f1[x]!=x) f1[x]=find1(f1[x]);
    return f1[x];
}
int find2(int x)
{
    if(f2[x]!=x) f2[x]=find2(f2[x]);
    return f2[x];
}
int main()
{
    cin>>n>>m>>p>>q;
    for(int i=1;i<=p;i++) f1[i]=i;
    for(int i=1;i<=q;i++) f2[i]=i;
    for(int i=1;i<=p;i++)
    {
        int x,y,t1,t2;
        cin>>x>>y;
        t1=find1(x),t2=find1(y);
        if(t1!=t2) f1[t2]=t1;
    }
    for(int i=1;i<=q;i++)
    {
        int x,y,t1,t2;
        cin>>x>>y;
        x=abs(x),y=abs(y);
        t1=find2(x),t2=find2(y);
        if(t1!=t2) f2[t2]=t1;
    }
    for(int i=1;i<=n;i++)
    {
        if(find1(i)==find1(1)) sum1++;
    }
    for(int i=1;i<=m;i++)
    {
        if(find2(i)==find2(1)) sum2++;
    }
    cout<<min(sum1,sum2)<<endl;
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...