259542026-03-08 23:28:09kukkermanBizonyításcpp17Accepted 50/50224ms5684 KiB
#include <iostream>
#include <vector>
#include <algorithm>

struct Ora {
    int x, y;
    bool dolgozat;
};
using Orak = std::vector<Ora>;

void beolvas(Orak &orak, int &n, std::istream &be = std::cin) {
    int q;
    be >> n >> q;

    orak.resize(q);
    for (auto &o : orak) {
        int t;
        be >> t >> o.x >> o.y;
        o.dolgozat = t == 2;
    }
}

void feldolgoz(const Orak &orak, int n) {
    const int q = static_cast<int>(orak.size());
    std::vector<std::vector<int>> d(n + 1, std::vector<int>(n + 1, q + 1));

    for (int i = 0; i < q; i++) {
        const auto &o = orak[i];
        if (!o.dolgozat) {
            d[o.x][o.y] = i + 1;
        }
    }

    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                const auto ikj_ut = std::max(d[i][k], d[k][j]);
                d[i][j] = std::min(d[i][j], ikj_ut);
            }
        }
    }

    for (int i = 0; i < q; i++) {
        const auto &o = orak[i];
        if (o.dolgozat) {
            std::cout << (d[o.x][o.y] < i + 1 ? "IGEN\n" : "NEM\n");
        }
    }
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    Orak orak;
    int n;
    beolvas(orak, n);
    feldolgoz(orak, n);

    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted218ms4660 KiB
subtask210/10
3Accepted2ms512 KiB
4Accepted12ms564 KiB
5Accepted165ms1844 KiB
6Accepted74ms1448 KiB
7Accepted65ms1476 KiB
8Accepted18ms564 KiB
9Accepted1ms512 KiB
10Accepted12ms736 KiB
11Accepted45ms1276 KiB
12Accepted129ms1668 KiB
subtask315/15
13Accepted1ms316 KiB
14Accepted1ms508 KiB
15Accepted1ms508 KiB
16Accepted1ms500 KiB
17Accepted1ms316 KiB
18Accepted1ms316 KiB
19Accepted1ms316 KiB
20Accepted1ms316 KiB
21Accepted1ms316 KiB
22Accepted1ms316 KiB
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Accepted2ms628 KiB
26Accepted2ms316 KiB
27Accepted1ms420 KiB
28Accepted1ms316 KiB
29Accepted1ms316 KiB
30Accepted1ms332 KiB
31Accepted1ms316 KiB
32Accepted1ms316 KiB
33Accepted1ms424 KiB
34Accepted1ms512 KiB
35Accepted1ms508 KiB
36Accepted1ms500 KiB
37Accepted1ms316 KiB
38Accepted1ms316 KiB
subtask425/25
39Accepted1ms316 KiB
40Accepted218ms4712 KiB
41Accepted2ms512 KiB
42Accepted12ms564 KiB
43Accepted165ms1844 KiB
44Accepted74ms1448 KiB
45Accepted65ms1476 KiB
46Accepted18ms564 KiB
47Accepted1ms512 KiB
48Accepted12ms736 KiB
49Accepted45ms1276 KiB
50Accepted129ms1668 KiB
51Accepted1ms508 KiB
52Accepted1ms508 KiB
53Accepted1ms500 KiB
54Accepted1ms316 KiB
55Accepted1ms316 KiB
56Accepted1ms316 KiB
57Accepted1ms316 KiB
58Accepted1ms316 KiB
59Accepted1ms316 KiB
60Accepted1ms316 KiB
61Accepted1ms316 KiB
62Accepted2ms628 KiB
63Accepted2ms316 KiB
64Accepted1ms420 KiB
65Accepted1ms316 KiB
66Accepted1ms316 KiB
67Accepted1ms332 KiB
68Accepted1ms316 KiB
69Accepted1ms316 KiB
70Accepted1ms424 KiB
71Accepted1ms512 KiB
72Accepted1ms508 KiB
73Accepted1ms500 KiB
74Accepted1ms316 KiB
75Accepted1ms316 KiB
76Accepted23ms1844 KiB
77Accepted64ms1268 KiB
78Accepted143ms3892 KiB
79Accepted52ms1260 KiB
80Accepted100ms2868 KiB
81Accepted23ms1588 KiB
82Accepted28ms1584 KiB
83Accepted39ms1356 KiB
84Accepted72ms1844 KiB
85Accepted128ms2864 KiB
86Accepted41ms2356 KiB
87Accepted107ms2848 KiB
88Accepted50ms1332 KiB
89Accepted63ms1540 KiB
90Accepted184ms4652 KiB
91Accepted199ms3748 KiB
92Accepted182ms4496 KiB
93Accepted160ms3392 KiB
94Accepted181ms4660 KiB
95Accepted188ms3124 KiB
96Accepted199ms3720 KiB
97Accepted196ms3380 KiB
98Accepted194ms3672 KiB
99Accepted204ms4148 KiB
100Accepted193ms5172 KiB
101Accepted194ms5172 KiB
102Accepted224ms5612 KiB
103Accepted224ms5684 KiB
104Accepted186ms5172 KiB