Overview
有n个人,m个亲戚关系,询问p对亲戚关系。
m行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。
p行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。
n,m,p≤5000
Analysis
并查集裸题。
#include <cstdio>
using namespace std;
int n,m,q;
int f[1240*10];
inline int read(void)
{
int s=0; char c=getchar();
for (;c<'0'||c>'9';c=getchar());
for (;'0'<=c&&c<='9';c=getchar()) s=(s<<1)+(s<<3)+c-'0';
return s;
}
int find(int i)
{
return f[i]==i?i:f[i]=find(f[i]);
}
int main(void)
{
n=read(),m=read(),q=read();
for (int i=1;i<=n;i++) f[i]=i;
for (int i=1;i<=m;i++) f[find(read())]=find(read());
for (int i=1;i<=q;i++) printf("%s\n",find(read())==find(read())?"Yes":"No");
return 0;
}