50pts求助
查看原帖
50pts求助
550933
Tjaweiof楼主2023/10/12 13:35

RT

#include <bits/stdc++.h>
using namespace std;
int n, m, q, u, v, dis[2][100001];
vector <int> e[100001];
bool vis[2][100001], f[100001];
void bfs(){
	queue <int> q;
	q.push(1);
	memset(dis, 0x3f3f3f3f, sizeof dis);
	vis[0][1] = true;
	dis[0][1] = 0;
	while (!q.empty()){
		int nx = q.front();
		q.pop();
		for (int i : e[nx]){
			if (vis[f[nx] ^ 1][i]){
				continue;
			}
			f[i] = f[nx] ^ 1;
			vis[f[i]][i] = true;
			dis[f[i]][i] = dis[f[nx]][nx] + 1;
			q.push(i);
		}
	}
	return;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m >> q;
	for (int i = 1; i <= m; i++){
		cin >> u >> v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	bfs();
	for (int i = 1; i <= q; i++){
		cin >> u >> v;
		if (dis[v % 2][u] <= v){
			cout << "Yes" << endl;
		} else {
			cout << "No" << endl;
		}
	}
	return 0;
}
2023/10/12 13:35
加载中...