求助P5663
查看原帖
求助P5663
302584
DottedCalculator楼主2020/8/26 19:34

请问在代码里怎么考虑环的出现?目前只有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;
}
2020/8/26 19:34
加载中...