请问在代码里怎么考虑环的出现?目前只有5分。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
struct node{
int a,b;
};
int n,m,q,u,v,path[100000],cur=0,t;
node c[100000];
int check(){
for(int i=0;i<n;i++){
if(path[i]=999999999) return 1;
}
return 0;
}
int dijkstra(int k,int dist){
if(dist>n) return 0;
for(int i=0;i<m;i++){
if(c[i].a==k){
if(path[c[i].b]>dist) path[c[i].b]=dist;
return dijkstra(c[i].b,dist+1);
}
if(c[i].b==k){
if(path[c[i].a]>dist) path[c[i].a]=dist;
return dijkstra(c[i].a,dist+1);
}
}
return 0;
}
int main(){
cin>>n>>m>>q;
for(int i=0;i<m;i++) cin>>c[i].a>>c[i].b;
for(int i=0;i<n;i++) path[i]=999999999;
path[0]=0;
t=dijkstra(1,1);
for(int i=0;i<q;i++){
cin>>u>>v;
if(v>=path[u]&&v%2==path[u]%2) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
//getchar();getchar();
return 0;
}