WA35pts bfs最短路 代码求调
查看原帖
WA35pts bfs最短路 代码求调
558202
gogei楼主2024/7/9 16:14
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
int n, m, q, ji[N], ou[N];
bool vis[N];
vector<int> e[N];
void bfs()
{
	memset(ji, 0x3f, sizeof(ji));
	memset(ou, 0x3f, sizeof(ou));
	queue <int> q;
	q.push(1);
	ou[1] = 0;
	vis[1] = 1;
	while (!q.empty())
	{
		int u = q.front();
		q.pop();
		for (auto v : e[u])
		{
			if (ou[u] + 1 < ji[v])
			{
				ji[v] = ou[u] + 1;
				if (!vis[v])
					q.push(v), vis[v] = 1;
			}
			if (ji[u] + 1 < ou[v])
			{
				ou[v] = ji[u] + 1;
				if (!vis[v])
					q.push(v), vis[v] = 1;
			}
		}
	}
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> n >> m >> q;
	for (int i = 1; i <= m; i++)
	{
		int u, v;
		cin >> u >> v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	bfs();
	while (q--)
	{
		int a, l;
		cin >> a >> l;
		if (l % 2 == 0)
		{
			if (ou[a] > l)
				puts("No");
			else
				puts("Yes");
		}
		else
		{
			if (ji[a] > l)
				puts("No");
			else
				puts("Yes");
		}
	}
}

悬赏一关

2024/7/9 16:14
加载中...