139712025-01-09 13:12:06RRoliTom és Jerry 1 (80)cpp17Hibás válasz 8/80122ms5792 KiB
#include <bits/stdc++.h>
using namespace std;

int n, m, t, p, e;
vector<int> tL;
vector<vector<int>> szom, tszom;

int main() {
    cin >> n >> m >> t >> p >> e;
    tL.resize(n+1, -1);
    szom.resize(n+1, vector<int>(0));
    tszom.resize(n+1, vector<int>(0));

    for(int i = 0; i < m; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        szom[a].push_back(b);
        szom[b].push_back(a);
        if(c == 2) {
            tszom[a].push_back(b);
            tszom[b].push_back(a);
        }
    }

    queue<int> sor;
    sor.push(t);
    tL[t] = 0;
    int ln = 0;
    while(!sor.empty()) {
        for(auto i : tszom[sor.front()]) {
            if(tL[i] == -1) {
                tL[i] = tL[sor.front()]+1;
                sor.push(i);
                ln = max(ln, tL[i]);
            }
        }
        sor.pop();
    }

    vector<bool> win(n+1, false);
    vector<int> L(n+1, -1);
    win[e] = true;
    L[e] = true;
    sor.push(e);
    while(!sor.empty()) {
        for(auto i : szom[sor.front()]) {
            if(L[i] == -1 && tL[i] == -1) {
                win[i] = true;
                sor.push(i);
            }
            L[i] = 0;
        }
        sor.pop();
    }

    for(int i = 1; i <= n; i++) {
        L[i] = -1;
        if(tL[i] == ln && tL[i] > 0) {
            sor.push(i);
            L[i] = ln;
        }
    }

    while(!sor.empty()) {
        win[sor.front()] = true;
        if(L[sor.front()] > 1)
            for(auto i : szom[sor.front()]) {
                if(L[i] == -1) {
                    L[i] = L[sor.front()]-1;
                    sor.push(i);
                }
            }
        sor.pop();
    }

    for(int i = 0; i < p; i++) {
        int k;
        cin >> k;
        if(win[k]) cout << "IGEN\n";
        else cout << "NEM\n";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/80
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms316 KiB
3Hibás válasz0/41ms316 KiB
4Hibás válasz0/41ms316 KiB
5Elfogadva4/41ms508 KiB
6Hibás válasz0/41ms316 KiB
7Hibás válasz0/42ms316 KiB
8Hibás válasz0/42ms392 KiB
9Hibás válasz0/43ms508 KiB
10Hibás válasz0/43ms564 KiB
11Hibás válasz0/49ms676 KiB
12Elfogadva4/413ms1376 KiB
13Hibás válasz0/421ms1656 KiB
14Hibás válasz0/446ms2960 KiB
15Hibás válasz0/467ms3076 KiB
16Hibás válasz0/470ms5792 KiB
17Hibás válasz0/4120ms5128 KiB
18Hibás válasz0/465ms3960 KiB
19Hibás válasz0/493ms5000 KiB
20Hibás válasz0/479ms5036 KiB
21Hibás válasz0/472ms3636 KiB
22Hibás válasz0/4122ms5112 KiB