求助全×!
查看原帖
求助全×!
681558
Weizhuo_Zhao楼主2024/12/17 18:31
#include <bits/stdc++.h>
using namespace std;
const int yhy = 100005;
int n, m, t;
vector<int>a[yhy];

void in() {
	cin >> n >> m >> t;
	while (m--) {
		int u, v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
}
int dis_j[yhy], dis_o[yhy];
queue<pair<int, int> >q;

void bfs() {
	for (int i = 1; i <= n; i++)
		dis_j[i] = INT_MAX / 2;
	for (int i = 1; i <= n; i++)
		dis_o[i] = INT_MAX / 2;
	for (int i = 0; i < a[1].size(); i++) {
		dis_j[a[1][i]] = 1;
		q.push(make_pair(a[1][i], 1));
	}
	while (!q.empty()) {
		q.pop();
		int x = q.front().first;
		int y = q.front().second;
		for (int i = 0; i < a[x].size(); i++) {
			if (y % 2) {
				if (y + 1 < dis_o[a[x][i]]) {
					dis_o[a[x][i]] = y + 1;
					q.push(make_pair(a[x][i], y + 1));
				}
			} else if (y + 1 < dis_j[a[x][i]]) {
				dis_j[a[x][i]] = y + 1;
				q.push(make_pair(a[x][i], y + 1));
			}
		}

	}
}

void out() {
	while (t--) {
		int x, y;
		cin >> x >> y;
		puts(y % 2 ? (dis_j[x] > y ? "No" : "Yes" ) : (dis_o[x] > y ? "No" : "Yes"));
	}
}

int main() {
	in();
	bfs();
	out();
	return 0;
}
2024/12/17 18:31
加载中...