5112 2023. 04. 17 22:48:24 nmarci Dinók cpp11 Accepted 100/100 171ms 76280 KiB
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <deque>
#include <set>

using namespace std;
using ll = long long int;

set<int> g[200100];
int l[100100], r[100100];
int val[200100];
int color[200100];
deque<int> q;
int ido = 0;
bool topsort(int node) {
    color[node] = 1;
    bool ans = true;
    for (auto i : g[node]) {
        if (color[i] == 1) {
            cout << "NEM" << endl;
            exit(0);
            return false;
        }
        else if (color[i] == 0) {
            ans &= topsort(i);
        }
    }
    q.push_front(node);
    color[node] = 2;
    return ans;
}

vector<pair<int, int>> kettes;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    int cnt = 1;
    for (int i = 1; i <= n; ++i) {
        l[i] = cnt++;
        r[i] = cnt++;
        g[l[i]].emplace(r[i]);
    }
    while (m--) {
        int t, a, b;
        cin >> t >> a >> b;
        if (t == 1) {
            g[l[b]].emplace(r[a]);    //ok
            g[l[a]].emplace(r[b]);
        }
        if (t == 2) {
            g[r[a]].emplace(l[b]);
        }
    }
    /*for (int i = 1; i <= 2 * n; ++i) {
        for (auto j : g[i]) {
            cerr << j << " ";
        }
        cerr << endl;
    }*/
        for (int i = 1; i <= 2 * n; ++i) {
            color[i] = 0;
        }
        q.clear();
        
        bool ok = true;
        for (int i = 1; i <= 2 * n; ++i) {
            if (!color[i]) ok &= topsort(i);
        }
        if (ok) {
            for (int i = 0; i < 2 * n; ++i) {
                val[q[i]] = i + 1;
            }
            cout << "IGEN\n";
            for (int i = 1; i <= n; ++i) {
                cout << val[l[i]] << " " << val[r[i]] << "\n";
            }
            return 0;
        }
    return 0;
}
Subtask Sum Test Verdict Time Memory
subtask1 0/0
1 Accepted 8ms 20700 KiB
2 Accepted 10ms 20980 KiB
3 Accepted 14ms 22632 KiB
subtask2 5/5
4 Accepted 155ms 57376 KiB
5 Accepted 93ms 48876 KiB
6 Accepted 75ms 44744 KiB
subtask3 15/15
7 Accepted 9ms 24560 KiB
8 Accepted 10ms 24644 KiB
9 Accepted 10ms 24608 KiB
10 Accepted 9ms 24876 KiB
11 Accepted 8ms 24952 KiB
12 Accepted 8ms 25320 KiB
subtask4 10/10
13 Accepted 8ms 25248 KiB
14 Accepted 8ms 25160 KiB
15 Accepted 8ms 25432 KiB
16 Accepted 8ms 25540 KiB
17 Accepted 8ms 25648 KiB
subtask5 35/35
18 Accepted 10ms 25660 KiB
19 Accepted 10ms 25764 KiB
20 Accepted 111ms 52164 KiB
21 Accepted 108ms 53504 KiB
22 Accepted 8ms 28324 KiB
23 Accepted 9ms 28548 KiB
24 Accepted 78ms 51824 KiB
subtask6 35/35
25 Accepted 171ms 62764 KiB
26 Accepted 140ms 64152 KiB
27 Accepted 150ms 65384 KiB
28 Accepted 142ms 66840 KiB
29 Accepted 92ms 63420 KiB
30 Accepted 137ms 68932 KiB
31 Accepted 137ms 70808 KiB
32 Accepted 89ms 67480 KiB
33 Accepted 75ms 66064 KiB
34 Accepted 152ms 75448 KiB
35 Accepted 119ms 76280 KiB