20852022-12-16 22:13:20TomaSajtDinókcpp17Elfogadva 100/100104ms27600 KiB
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0);cin.tie(0)
using namespace std;

int main() {
    speed;
    int n, m;
    cin >> n >> m;
    vector<vector<int>> g(2 * n);
    vector<int> deps(2 * n), pos(2 * n);
    auto makeEdge = [&](int u, int v) { g[u].push_back(v); deps[v]++; };
    for (int i = 0; i < n; i++) makeEdge(2 * i, 2 * i + 1);
    while (m--) {
        int t, a, b;
        cin >> t >> a >> b; --a, --b;
        if (t == 1) makeEdge(2 * b, 2 * a + 1), makeEdge(2 * a, 2 * b + 1);
        else makeEdge(2 * a + 1, 2 * b);
    }
    queue<int> q;
    for (int i = 0; i < n; i++) {
        if (deps[2 * i] == 0) q.push(2 * i);
    }
    int cnt = 0;
    while (!q.empty()) {
        int u = q.front(); q.pop();
        pos[u] = ++cnt;
        for (int v : g[u]) {
            if (--deps[v] == 0) q.push(v);
        }
    }
    if (cnt == 2 * n) {
        cout << "IGEN";
        for (int i = 0; i < n; i++) cout << '\n' << pos[2 * i] << ' ' << pos[2 * i + 1];
    }
    else cout << "NEM";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva2ms2184 KiB
3Elfogadva4ms3268 KiB
subtask25/5
4Elfogadva93ms23568 KiB
5Elfogadva61ms22696 KiB
6Elfogadva46ms22524 KiB
subtask315/15
7Elfogadva2ms2712 KiB
8Elfogadva2ms2944 KiB
9Elfogadva2ms3148 KiB
10Elfogadva2ms3252 KiB
11Elfogadva2ms3352 KiB
12Elfogadva2ms3356 KiB
subtask410/10
13Elfogadva2ms3480 KiB
14Elfogadva2ms3556 KiB
15Elfogadva2ms3556 KiB
16Elfogadva2ms3748 KiB
17Elfogadva2ms3824 KiB
subtask535/35
18Elfogadva2ms3812 KiB
19Elfogadva3ms4160 KiB
20Elfogadva93ms27352 KiB
21Elfogadva82ms27600 KiB
22Elfogadva2ms4572 KiB
23Elfogadva2ms4696 KiB
24Elfogadva68ms27468 KiB
subtask635/35
25Elfogadva86ms25508 KiB
26Elfogadva87ms25516 KiB
27Elfogadva104ms25692 KiB
28Elfogadva92ms25668 KiB
29Elfogadva68ms26500 KiB
30Elfogadva96ms26036 KiB
31Elfogadva94ms25644 KiB
32Elfogadva67ms26308 KiB
33Elfogadva65ms26960 KiB
34Elfogadva98ms25852 KiB
35Elfogadva75ms25272 KiB