WA #18和#20两个点
#include<bits/stdc++.h>
using namespace std;
int js=0,js2[100005],list1[100005][2]={{},{1,0}},ans1[100005],ans2[100005],i=0,j=1,n,m,q,ui,vi,a,l;
struct node
{
int u,v,next=0;
}s[200010];
void lianjie(int x,int y)
{
s[++js].u=x;
s[js].v=y;
s[js].next=js2[x];
js2[x]=js;
}
void bfs()
{
for(int i=0;i<=n;i++)ans1[i]=ans2[i]=1e9;
while(i<j)
{
i++;
js=js2[list1[i][0]];
while(js!=0)
{
list1[++j][0]=s[js].v;
list1[j][1]=list1[i][1]+1;
if((ans1[s[js].v]!=1e9&&list1[j][1]%2==0)||(ans2[s[js].v]!=1e9&&list1[j][1]%2==1))j--;
else
{
if(list1[j][1]%2==0)
ans1[s[js].v]=list1[j][1];
else
ans2[s[js].v]=list1[j][1];
}
js=s[js].next;
}
}
}
int main()
{
cin>>n>>m>>q;
for(int k=0;k<m;k++)
{
cin>>ui>>vi;
lianjie(ui,vi);
lianjie(vi,ui);
}
bfs();
for(int k=0;k<q;k++)
{
cin>>a>>l;
if((l%2==0&&l>=ans1[a])||(l%2==1&&l>=ans2[a]))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
};
}