rt,太简单了
#include<bits/stdc++.h>
using namespace std;
vector<long long>g[100005];
long long n,m,q,a,l,dis[100005],diss[100005],u,v;
void bfs()
{
memset(dis,0x3f,sizeof(dis));
memset(diss,0x3f,sizeof(diss));
diss[1] = 0;
queue<long long>q;
q.push(1);
while(q.size())
{
long long f=q.front();
q.pop();
for(auto i:g[f])
{
//cout<<1<<endl;
if(diss[i]>dis[f]+1||dis[i]>diss[f]+1)
{
diss[i] = min(diss[i],dis[f]+1);
dis[i] = min(dis[i],diss[f]+1);
q.push(i);
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>q;
for(int i=1;i<=m;i++)
{
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
bfs();
for(int i=1;i<=q;i++)
{
cin>>a>>l;
if((dis[a]!=0x3f3f3f3f3f3f3f3f&&(dis[a]-l)%2==0&&dis[a]<=l)||(diss[a]!=0x3f3f3f3f3f3f3f3f&&(diss[a]-l)%2==0&&diss[a]<=l))
{
cout<<"Yes";
}
else
{
cout<<"No";
}
cout<<endl;
}
return 0;
}
不喜勿喷