求调:
#include<bits/stdc++.h>
using namespace std;
int d0[100010],d1[100010];
vector<int> pic[100010];
int n,m,q;
void bfs(){
queue<pair<int,int> > q;
for(int i=0;i<pic[1].size();i++){
pic[1][i]=1;
q.push(make_pair(pic[1][i],1));
}
while(!q.empty()){
int x=q.front().first,y=q.front().second;
for(int i=0;i<pic[x].size();i++){
if(y%2==0){
if(y+1<d1[pic[x][i]]){
d1[pic[x][i]]=y+1;
q.push(make_pair(pic[x][i],y+1));
}
}else{
if(y+1<d0[pic[x][i]]){
d0[pic[x][i]]=y+1;
q.push(make_pair(pic[x][i],y+1));
}
}
}
q.pop();
}
return;
}
int main(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
pic[u].push_back(v);
pic[v].push_back(u);
}
bfs();
for(int i=1;i<=q;i++){
int a,l;
cin>>a>>l;
if(l%2==0){
if(d0[a]>l)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}else{
if(d1[a]>l)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
return 0;
}
感谢大主播(我们班男生口头禅)