5pts求条
查看原帖
5pts求条
1437066
wangjunhe楼主2025/7/31 15:48
#include<bits/stdc++.h>
using namespace std;
int n,m,q,u,v,a,L,o[100005],j[100005];
vector<int>g[100005];
void bfs(){
	memset(j,0x3f,sizeof(j));
	memset(o,0x3f,sizeof(o));
	queue<pair<int,int>>p;
	for(auto i:g[1]){
		p.push({i,1});
		j[i]=1;
	}
	while(!p.empty()){
		auto t=p.front();
		p.pop();
		int x=t.first,y=t.second;
		for(auto i:g[x]){
			if(y%2==0)
				if(y+1<j[i]){
					j[i]=y+1;
					p.push({i,y+1});
				}
			else
				if(y+1<o[i]){
					o[i]=y+1;
					p.push({i,y+1});
				}
		}
	}
}
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(u);
		g[v].push_back(v);
	}
	bfs();
	for(int i=1;i<=q;i++){
		cin>>a>>L;
		if(L%2==0){
			if(o[a]<=L)
				cout<<"Yes\n";
			else
				cout<<"No\n";
		}
		else{
			if(j[a]<=L)
				cout<<"Yes\n";
			else
				cout<<"No\n";
		}
	}
	return 0;
}
2025/7/31 15:48
加载中...