176872025-09-13 10:52:58TakacsAndrasTom és Jerry 1 (80)cpp17Wrong answer 60/80115ms6096 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,m,t,p,e; cin >> n >> m >> t >> p >> e;
    vector<vector<pair<int,int>>> g(n+1);
    for (int i = 0; i < m; i++) {
        int a,b,c; cin >> a >> b >> c;
        g[a].push_back({b,c});
        g[b].push_back({a,c});
    }
    vector<int> p1(p);
    for (int &x : p1) cin >> x;
    vector<int> d1(n+1,1e6);
    queue<int> q1;
    d1[t] = 0;
    q1.push(t);
    while (!q1.empty()) {
        int u = q1.front();
        q1.pop();
        for (auto x : g[u]) {
            if (x.second == 2 && d1[x.first] == 1e6) {
                d1[x.first] = d1[u]+1;
                q1.push(x.first);
            }
        }
    }
    queue<pair<int,int>> q2;
    q2.push({e,d1[e]});
    vector<bool> d2(n+1);
    while (!q2.empty()) {
        int u = q2.front().first, d = q2.front().second;
        q2.pop();
        if (d <= 0) continue;
        d2[u] = true;
        for (auto x : g[u]) {
            if (!d2[x.first]) q2.push({x.first,min(d-1,d1[x.first])});
        }
    }
    for (int x : p1) {
        if (d2[x]) cout << "IGEN\n";
        else cout << "NEM\n";
    }
}
SubtaskSumTestVerdictTimeMemory
base60/80
1Accepted0/01ms316 KiB
2Accepted0/03ms316 KiB
3Accepted4/41ms332 KiB
4Accepted4/41ms316 KiB
5Accepted4/41ms320 KiB
6Accepted4/41ms316 KiB
7Accepted4/42ms316 KiB
8Wrong answer0/42ms500 KiB
9Wrong answer0/43ms508 KiB
10Accepted4/43ms496 KiB
11Accepted4/49ms784 KiB
12Accepted4/412ms1080 KiB
13Accepted4/423ms1620 KiB
14Accepted4/445ms2876 KiB
15Accepted4/478ms4540 KiB
16Accepted4/465ms4420 KiB
17Accepted4/4100ms5172 KiB
18Accepted4/468ms4008 KiB
19Wrong answer0/464ms4148 KiB
20Wrong answer0/463ms3972 KiB
21Accepted4/457ms3756 KiB
22Wrong answer0/4115ms6096 KiB