40分
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,q;
int d[200010];
vector<int>a[200010];
bool f[200010];
void dj(){
memset(d,0x3f,sizeof(d));
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q;
q.push({1,0});
d[1]=0;
while(!q.empty()){
auto t=q.top();
q.pop();
int u=t.first;
if(f[u]==true) continue;
f[u]=true;
for(int i=0;i<a[u].size();i++){
int x=a[u][i];
if(d[u]+1<d[x]){
d[x]=d[u]+1;
q.push({x,d[x]});
}
}
}
}
signed main(){
cin>>n>>m>>q;
while(m--){
int x,y;
cin>>x>>y;
a[x].push_back(y+n);
a[y+n].push_back(x);
a[y].push_back(x+n);
a[x+n].push_back(y);
}
dj();
while(q--){
int x,y;
cin>>x>>y;
if(y%2==1){
if(y>=d[x+n]){
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
}
else{
if(y>=d[x]){
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
}
}
return 0;
}