第32行的else 按说是不能加(奇偶最短路按说分开)的,加了也过是为什么???
#include<bits/stdc++.h>
using namespace std;
int h[200005],nxt[200005],to[200005],dis[100005][3],cnt;
void add(int u,int v){
cnt++;
nxt[cnt]=h[u];
h[u]=cnt;
to[cnt]=v;
}
int main(){
int n,m,qu,u,v,a,l;
cin>>n>>m>>qu;
for(int i=1;i<=n;i++){
dis[i][1]=dis[i][2]=0x3fffffff;
}
for(int i=1;i<=m;i++){
cin>>u>>v;
add(u,v);
add(v,u);
}
queue<int> q;
dis[1][2]=0;
q.push(1);
while(!q.empty()){
int u=q.front();
q.pop();
for(int t=h[u];t;t=nxt[t]){
int v=to[t];
if(dis[u][1]+1<dis[v][2]){
q.push(v);
dis[v][2]=dis[u][1]+1;
}else//??????????
if(dis[u][2]+1<dis[v][1]){
q.push(v);
dis[v][1]=dis[u][2]+1;
}
}
}
for(int i=1;i<=qu;i++){
cin>>a>>l;
if(l%2==0){
if(dis[a][2]<=l){
puts("Yes");
}else{
puts("No");
}
}else{
if(dis[a][1]<=l){
puts("Yes");
}else{
puts("No");
}
}
}
return 0;
}