哪里错了
#include <bits/stdc++.h>
using namespace std;
int n,m,q,x,y,f1[100010],f2[100010];
vector<int >edge[100010];
int bfs(){
queue<pair<int,int> >q;
for(int i=0;i<edge[1].size();i++){
f1[edge[1][i]]=1;
q.push(make_pair(edge[1][i],1));
}
while(q.size()){
int u=q.front().first,v=q.front().second;
q.pop();
for(int i=0;i<edge[u].size();i++)
if(v%2==1)
if(v+1<f2[edge[u][i]]){
f2[edge[u][i]]=v+1;
q.push(make_pair(edge[u][i],v+1));
}
else
if(v+1<f1[edge[u][i]]){
f1[edge[u][i]]=v+1;
q.push(make_pair(edge[u][i],v+1));
}
}
}
int main(){
memset(f1,0x7f7f7f7f,sizeof(f1));
memset(f2,0x7f7f7f7f,sizeof(f2));
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
cin>>x>>y;
edge[x].push_back(y);
edge[y].push_back(x);
}
bfs();
while(q--){
cin>>x>>y;
if(y%2==0)
if(f2[x]>y)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
else
if(f1[x]>y)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
哪里错了???