// c++#include<iostream>#define ll long longusingnamespace std;int father[5010];// 构造voidinitial(int n){for(int i=0; i <= n; i++) father[i]= i;}// 查找intfind(int x){return x == father[x]? x : father[x]=find(father[x]);}// 相同吗boolisSame(int x,int y){returnfind(x)==find(y);}// 变成同一类voidmy_union(int x,int y){
x =find(x);
y =find(y);
father[x]= y;return;}intmain(){int n, m, p;
cin >> n >> m >> p;initial(n);for(int i=0; i<m; i++){int j, k;
cin >> j >> k;my_union(j, k);}for(int i=0; i<p; i++){int j, k;
cin >> j >> k;
cout<<(isSame(j,k)?"Yes":"No")<< endl;}return0;}
// javaclassUF{// Number of connected branchesprivateint count;// save the treeprivateint[] parent;// save the weight of thr nodeprivateint[] size;publicUF(int size){this,count = size;
parent =newint[size];this.size = size;for(int i =0; i <size(); i++){
parent[i]= i;
size[i]=1;}}// union publicvoidunion(int p,int q){int rootP =find(p);int rootQ =find(q);if(rootP == rootQ)return;// to be balanced, small to bigif(size[rootP]> size[rootQ]){
parent[rootQ]= rootP;
size[rootP]+= size[rootQ];}else{
parent[rootP]= rootQ;
size[rootQ]+= size[rootP];}
count--;}// connectedpublicbooleanconnected(int p,int q){returnfind(p)==find(q);}// find ---o(1)publicintfind(int t){while(parent[t]!= t){
parent[t]= parent[parent[t]];
t = parent[t];}}}