235032026-01-23 21:44:56matemakaiTom és Jerry 1 (80)cpp17Elfogadva 80/80112ms4168 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	const int MAX_DIST = 1e6;

	int n, m, t, p, e;
	cin >> n >> m >> t >> p >> e;
	--t;
	--e;
	vector<vector<pair<int, int>>> adj(n);
	for (int i = 0; i < m; ++i) {
		int a, b, c;
		cin >> a >> b >> c;
		--a;
		--b;
		--c;
		adj[a].push_back({b, c});
		adj[b].push_back({a, c});
	}

	vector<int> tdist(n, MAX_DIST);

	queue<int> q;
	q.push(t);
	tdist[t] = 0;

	while (!q.empty()) {
		int node = q.front();
		q.pop();

		for (auto [next, w] : adj[node]) {
			if (w && tdist[next] == MAX_DIST) {
				tdist[next] = tdist[node] + 1;
				q.push(next);
			}
		}
	}

	vector<int> jtime(n, 0);
	jtime[e] = tdist[e];
	q.push(e);

	while (!q.empty()) {
		int node = q.front();
		q.pop();

		for (auto [next, w] : adj[node]) {
			int new_jtime = min(jtime[node] - 1, tdist[next]);
			if (new_jtime > jtime[next]) {
				jtime[next] = new_jtime;
				q.push(next);
			}
		}
	}

	for (int i = 0; i < p; ++i) {
		int a;
		cin >> a;
		--a;
		if (jtime[a] > 0) {
			cout << "IGEN\n";
		} else {
			cout << "NEM\n";
		}
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base80/80
1Elfogadva0/01ms500 KiB
2Elfogadva0/03ms508 KiB
3Elfogadva4/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/41ms508 KiB
7Elfogadva4/41ms316 KiB
8Elfogadva4/42ms316 KiB
9Elfogadva4/43ms508 KiB
10Elfogadva4/43ms316 KiB
11Elfogadva4/49ms564 KiB
12Elfogadva4/412ms1072 KiB
13Elfogadva4/420ms1256 KiB
14Elfogadva4/445ms2216 KiB
15Elfogadva4/464ms2752 KiB
16Elfogadva4/463ms3868 KiB
17Elfogadva4/496ms3972 KiB
18Elfogadva4/463ms3076 KiB
19Elfogadva4/478ms3448 KiB
20Elfogadva4/475ms3380 KiB
21Elfogadva4/468ms2868 KiB
22Elfogadva4/4112ms4168 KiB