社区讨论
20pts求助
P2078朋友参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhk76i3o
- 此快照首次捕获于
- 2025/11/04 14:38 4 个月前
- 此快照最后确认于
- 2025/11/04 14:38 4 个月前
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e8;
ll n,m,p,q;
ll x,y;
ll maxn1[MAXN],maxn2[MAXN];
ll find1(ll o)
{
if(o==maxn1[o]) return maxn1[o];
else return maxn1[o]=find1(maxn1[o]);
}
void join1(ll a,ll b)
{
ll f1=find1(a),f2=find1(b);
if(f1!=f2) maxn1[f2]=f1;
}
ll find2(ll o)
{
if(o==maxn2[o]) return maxn2[o];
else return maxn2[o]=find2(maxn2[o]);
}
void join2(ll a,ll b)
{
ll f1=find2(a),f2=find2(b);
if(f1!=f2) maxn2[f2]=f1;
}
ll len1,len2;
int main()
{
cin>>n>>m>>p>>q;
for(ll i=1;i<=n;i++) maxn1[i]=i;
for(ll i=1;i<=m;i++) maxn2[i]=i;
for(ll i=1;i<=p;i++)
{
cin>>x>>y;
join1(x,y);
}
for(ll i=1;i<=q;i++)
{
cin>>x>>y;
join2(abs(x),abs(y));
}
for(ll i=1;i<=n;i++)
{
if(maxn1[i]==1) len1++;
}
for(ll i=1;i<=m;i++)
{
if(maxn2[i]==1) len2++;
}
cout<<min(len1,len2);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...