234942026-01-23 19:32:16zsomborTom és Jerry 1 (80)cpp17Accepted 80/8064ms14644 KiB
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int n, m, t, p, e, a, b, s;
vector <vector <int>> g(2e5);
vector <vector <int>> g2(2e5);
vector <int> dt(2e5, 1e9);
vector <int> v(2e5, 0);
vector <bool> done(2e5, false);
queue <int> q;
priority_queue <pair <int, int>> pq;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> m >> t >> p >> e;
	for (int i = 0; i < m; i++) {
		cin >> a >> b >> s;
		g[a].push_back(b);
		g[b].push_back(a);
		if (s == 1) continue;
		g2[a].push_back(b);
		g2[b].push_back(a);
	}

	dt[t] = 0;
	q.push(t);
	while (q.size()) {
		a = q.front();
		q.pop();
		for (int i : g2[a]) {
			if (dt[i] < n) continue;
			dt[i] = dt[a] + 1;
			q.push(i);
		}
	}

	v[e] = dt[e];
	pq.push({ v[e], e });
	while (pq.size()) {
		a = pq.top().second;
		pq.pop();
		if (done[a]) continue;
		done[a] = true;
		for (int i : g[a]) {
			s = min(v[a] - 1, dt[i]);
			if (s > v[i]) pq.push({ v[i] = s, i });
		}
	}

	while (p--) {
		cin >> a;
		cout << (v[a] ? "IGEN\n" : "NEM\n");
	}
}
SubtaskSumTestVerdictTimeMemory
base80/80
1Accepted0/012ms11316 KiB
2Accepted0/010ms11316 KiB
3Accepted4/49ms11316 KiB
4Accepted4/49ms11316 KiB
5Accepted4/412ms11224 KiB
6Accepted4/412ms11280 KiB
7Accepted4/410ms11316 KiB
8Accepted4/410ms11364 KiB
9Accepted4/412ms11664 KiB
10Accepted4/414ms11316 KiB
11Accepted4/417ms11576 KiB
12Accepted4/416ms11828 KiB
13Accepted4/421ms12088 KiB
14Accepted4/435ms13032 KiB
15Accepted4/448ms13196 KiB
16Accepted4/459ms13988 KiB
17Accepted4/464ms14644 KiB
18Accepted4/448ms13508 KiB
19Accepted4/463ms14596 KiB
20Accepted4/457ms13792 KiB
21Accepted4/439ms13876 KiB
22Accepted4/464ms14644 KiB