#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
#include <vector>
using namespace std;
#define N 100010
int n,m,Q;
int fa[N];
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int Find(int x)
{
return x==fa[x]?x:fa[x]=Find(fa[x]);
}
void Union(int x,int y)
{
int root1=Find(x),root2=Find(y);
if(root1!=root2)
fa[root1]=root2;
}
int main()
{
n=read();m=read();Q=read();
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
int x=read(),y=read();
Union(x,y);
}
for(int i=1;i<=Q;i++)
{
int x=read(),y=read();
if(Find(x)!=Find(y))
puts("No");
else puts("Yes");
}
return 0;
}
Vijos 1034 家族 ( 并查集 )
最新推荐文章于 2017-07-02 21:07:42 发布