30分求助,AC on 1~6
查看原帖
30分求助,AC on 1~6
793625
Pink_Cut_Tree楼主2024/8/8 11:19
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,inf=2e9;
#define pii pair<int,int>
int n,m,q;
int u,v;
vector<int>G[N];
queue<pii>Q;
int odd[N],even[N];
int x,y;
int main(){
	cin.tie(0)->sync_with_stdio(0);
	cin>>n>>m>>q;
	while(m--){
		cin>>u>>v;
		G[u].push_back(v);
		G[v].push_back(u);
	}
	memset(odd,63,sizeof odd);
	memset(even,63,sizeof even);
	for(int v:G[1]){
		odd[v]=1;
		Q.push({v,1});
	} 
	while(!Q.empty()){
		int x=Q.front().first,y=Q.front().second; Q.pop();
		for(int v:G[x]){
			if(y&1){
				if(even[v]>y+1){
					even[v]=y+1;
					Q.push({v,y+1});
				}
			}
			else{
				if(y+1<odd[v]){
					odd[v]=y+1;
					Q.push({odd[v],y+1});
				}
			}
		}
	}
	while(q--){
		cin>>x>>y;
		if(y&1){
			if(odd[x]>y){
				cout<<"No\n";
			}
			else{
				cout<<"Yes\n";
			}
		}
		else{
			if(even[x]>y){
				cout<<"No\n";
			}
			else{
				cout<<"Yes\n";
			}
		}
	}
return 0;
}
2024/8/8 11:19
加载中...