25分,求调,剩下的都是WA
查看原帖
25分,求调,剩下的都是WA
1495994
lorian1214楼主2024/10/11 18:05
//大括号爱换行别说我。。。
#include <bits/stdc++.h>
using namespace std;
int n, m, q, x, y, ji[100005], ou[100005];
vector<int> gx[100005];
struct node
{
	int k, level;
}camp;
void bfs()
{
	memset(ou, 127, sizeof(ou));
	memset(ji, 127, sizeof(ji));
	queue<node> q;
	for (int i = 0; i < gx[1].size(); ++i)
	{
		camp.k = gx[1][i];
		camp.level = 1;
		ji[gx[1][i]] = 1;
		q.push(camp);
	}
	while (!q.empty())
	{
		int k = q.front().k;
		int level = q.front().level;
		for (int i = 0; i < gx[k].size(); ++i)
			if (level % 2 == 1)
				if (level + 1 < ou[gx[k][i]])
				{
					camp.k = k;
					camp.level = level;
					ou[gx[k][i]] = level + 1;
					q.push(camp);
				}
			else
				if (level + 1 < ji[gx[k][i]])
				{
					camp.k = k;
					camp.level = level;
					ji[gx[k][i]] = level + 1;
					q.push(camp);
				}
		q.pop();
	}
	return;
}
int main()
{
	cin >> n >> m >> q;
	for (int i = 1; i <= m; ++i)
	{
		cin >> x >> y;
		gx[x].push_back(y);
		gx[y].push_back(x);
	}
	bfs();
	int k, level;
	for (int i = 1; i <= q; ++i)
	{
		cin >> k >> level;
		if (level % 2 == 1)
			if (ji[k] <= level)
				cout << "Yes" << '\n';
			else
				cout << "No" << '\n';
		else
			if (ou[k] <= level)
				cout << "Yes" << '\n';
			else
				cout << "No" << '\n';
	}
	return 0;
}
2024/10/11 18:05
加载中...