#include<bits/stdc++.h>
using namespace std;
long long next[200001],to[200001],head[200001],tot=0;
long long dis[200001][2];
bool vis[200001];
queue<int> q;
queue<bool> pd;
int n,m,k;
void bfs(int x){
for(int i=1;i<=n;i++){
dis[i][0]=dis[i][1]=0x3f3f3f3f;
}
memset(vis,false,sizeof(vis));
dis[x][0]=0;
q.push(x);
pd.push(0);
while(!q.empty()){
int now=q.front();
bool kind=pd.front();
vis[now]=false;
q.pop();
pd.pop();
for(int i=head[now];i;i=next[i]){
int nxt=to[i];
if(!vis[nxt]&&dis[now][kind]+1<dis[nxt][!kind]){
dis[nxt][!kind]=dis[now][kind]+1;
q.push(nxt);
pd.push(!kind);
vis[nxt]=true;
}
}
}
}
void add(int x,int y){
to[++tot]=y;
next[tot]=head[x];
head[x]=tot;
}
int main(){
scanf("%d%d%d",&n,&m,&k);
int x,y;
bool flag=false;
for(int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
if(x==1||y==1) flag=true;
add(x,y);
add(y,x);
}
bfs(1);
while(k--){
scanf("%d%d",&x,&y);
if(x==1){
if(flag==false){
cout<<"No"<<endl;
continue;
}
}
if(y>=dis[x][y%2]){
cout<<"Yes"<<endl;
// cout<<dis[1][0]<<" "<<dis[1][1]<<endl;
}
else{
cout<<"No"<<endl;
// cout<<dis[1][0]<<" "<<dis[1][1]<<endl;
}
}
return 0;
}