WA了最后四个点。。。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,t,h[1000010],cnt,ans[1000010];
bool st[1000010];
struct no{
int ans,id;
bool operator <(const no &x) const{
return x.ans<ans;
}
};
struct P{
int v,w,ne;
}e[100010];
void ad(int x,int y,int z){
e[++cnt].v=y,e[cnt].w=z,e[cnt].ne=h[x],h[x]=cnt;
}priority_queue<no> q;
void get(){
q.push({0,1});
while(q.size()){
no t=q.top();
q.pop();
if(st[t.id]==0){
st[t.id]=1;
for(int i=h[t.id];i;i=e[i].ne){
if(ans[e[i].v]>ans[t.id]+e[i].w){
ans[e[i].v]=ans[t.id]+e[i].w;
if(!st[e[i].v]) q.push({ans[e[i].v],e[i].v});
}
}
}
}
}signed main(){
cin>>n>>m>>t;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v,ad(v,u+n,1),ad(u+n,v,1),ad(v+n,u,1),ad(u,v+n,1);
}memset(ans,0x3f,sizeof ans);
ans[1]=0;
get();
while(t--){
int a,b;
cin>>a>>b;
if(b%2==1) cout<<(ans[a+n]<=b?"Yes":"No");
else cout<<(ans[a]<=b?"Yes":"No");
cout<<endl;
}
}