241412026-02-04 19:35:27xxxTom és Jerry 1 (80)cpp17Elfogadva 80/80115ms6780 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long


signed main() {
    int n, m, t, p, e;
    cin >> n >> m >> t >> p >> e;
    vector<vector<array<int, 2> > > adj(n+1);
    for(int i = 1; i <= m; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        adj[x].push_back({y, z});
        adj[y].push_back({x, z});
    }
    const int hm = 1000000000000000;
    vector<int> dist(n+1, hm), dist2(n+1, 0 ), dist3(n+1, hm);

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

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

        for(auto [u, z] : adj[v]) {
            if (z == 2 && dist[u] == hm) {
                dist[u] = dist[v] + 1;
                q.push(u);
            }
        }
    }

    q.push(e);
    dist2[e] = dist[e];

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

        for(auto [u, z] : adj[v]) {
            if(dist2[u] < min(dist2[v] - 1, dist[u])) {
                dist2[u] = min(dist2[v] - 1, dist[u]);
                q.push(u);
            }
        }
    }

    for(int i = 1; i <= p; i++) {
        int x;
        cin >> x;
        cout << (dist2[x] > 0 ? "IGEN" : "NEM" ) << '\n';
    }



}

/*
9 11 6 3 1
1 2 1
1 3 1
2 4 1
3 4 2
3 5 2
4 7 1
3 5 2
5 6 2
6 8 1
7 9 1
8 9 1
7
8
9
*/

RészfeladatÖsszpontTesztVerdiktIdőMemória
base80/80
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms564 KiB
3Elfogadva4/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/41ms316 KiB
7Elfogadva4/41ms316 KiB
8Elfogadva4/42ms316 KiB
9Elfogadva4/43ms460 KiB
10Elfogadva4/43ms528 KiB
11Elfogadva4/49ms820 KiB
12Elfogadva4/413ms1376 KiB
13Elfogadva4/421ms1844 KiB
14Elfogadva4/448ms3288 KiB
15Elfogadva4/465ms4400 KiB
16Elfogadva4/461ms5428 KiB
17Elfogadva4/498ms6452 KiB
18Elfogadva4/467ms4688 KiB
19Elfogadva4/479ms4916 KiB
20Elfogadva4/479ms4660 KiB
21Elfogadva4/468ms4148 KiB
22Elfogadva4/4115ms6780 KiB