加个压缩就行
2026-05-17 11:22:03
发布于:广东
9阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int fa[1000000];
int sixseven(int x){
if(x==fa[x])
return x;
else
return fa[x]=sixseven(fa[x]);//压缩
}
void merge(int x, int y)
{
fa[sixseven(x)]=sixseven(y);
}
int main()
{
int n,m,p;cin>>n>>m>>p;
for(int i = 1;i <= n;i++){
fa[i] = i;
}
while(m--)
{
int mi,mj;cin>>mi>>mj;
merge(mi,mj);
}
while(p--)
{
int pi,pj;cin>>pi>>pj;
if(sixseven(pi)==sixseven(pj))
cout<<"Yes\n";
else
cout<<"No\n";
}
}
甚至不用改
全部评论 2
d
2026-05-22 来自 广东
0d
2026-05-17 来自 广东
0






有帮助,赞一个