5197 2023. 04. 21 22:02:59 ZsofiaKeresztely Dinók cpp14 Időlimit túllépés 35/100 601ms 35988 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g, g2, comp;
vector<int> ind, tops, op, c;
vector<bool> inq;
int n, last = 1, cur = 0;

void dfs(int v){
    c[v] = cur;
    comp[cur].push_back(v);
    for (int x : g2[v]){
        if (c[x] < 0){
            dfs(x);
        }
    }
}

void bfs(){
    queue<int> q;
    for (int i=1; i<=n; i++){
        if (!ind[i]){
            q.push(i);
        }
    }
    while (!q.empty()){
        int v = q.front();
        q.pop();
        if (op[v]) continue;
        for (int x : comp[c[v]]){
            if (x == v) continue;
            if (!inq[x]){
                inq[v] = 1;
            }
        }
        if (!inq[v]){
            for (int x : comp[c[v]]){
                op[x] = last;
                for (int y : g[x]){
                    ind[y]--;
                    if (!ind[y]) q.push(y);
                }
            }
            last += 2;
        }
    }
}

int main()
{
    int m;
    cin >> n >> m;
    g.resize(n+1);
    g2.resize(n+1);
    comp.resize(n+1);
    inq.assign(n+1, 0);
    ind.assign(n+1, 0);
    c.assign(n+1, -1);
    op.assign(n+1, 0);
    while (m--){
        int t, a, b;
        cin >> t >> a >> b;
        if (t == 2){
            g[a].push_back(b);
            ind[b]++;
        }
        else{
            g2[a].push_back(b);
            g2[b].push_back(a);
        }
    }
    for (int i=1; i<=n; i++){
        if (c[i] < 0){
            comp.push_back({});
            dfs(i);
            cur++;
        }
    }
    bfs();
    for (int i=1; i<=n; i++){
        if (!op[i]){
            cout << "NEM";
            return 0;
        }
    }
    cout << "IGEN";
    for (int i=1; i<=n; i++){
        cout << "\n" << op[i] << " " << op[i] + 1;
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1692 KiB
2 Elfogadva 3ms 1844 KiB
3 Elfogadva 8ms 3444 KiB
subtask2 0/5
4 Időlimit túllépés 601ms 15492 KiB
5 Időlimit túllépés 540ms 15324 KiB
6 Elfogadva 78ms 30520 KiB
subtask3 0/15
7 Elfogadva 3ms 2844 KiB
8 Elfogadva 3ms 3092 KiB
9 Elfogadva 3ms 3284 KiB
10 Hibás válasz 3ms 3456 KiB
11 Hibás válasz 3ms 3828 KiB
12 Elfogadva 2ms 3716 KiB
subtask4 0/10
13 Elfogadva 3ms 3952 KiB
14 Hibás válasz 2ms 4016 KiB
15 Elfogadva 3ms 4016 KiB
16 Elfogadva 3ms 4032 KiB
17 Hibás válasz 2ms 4028 KiB
subtask5 35/35
18 Elfogadva 3ms 3980 KiB
19 Elfogadva 3ms 4344 KiB
20 Elfogadva 166ms 35820 KiB
21 Elfogadva 158ms 35892 KiB
22 Elfogadva 3ms 4152 KiB
23 Elfogadva 4ms 4540 KiB
24 Elfogadva 136ms 35988 KiB
subtask6 0/35
25 Időlimit túllépés 583ms 17660 KiB
26 Időlimit túllépés 566ms 17724 KiB
27 Időlimit túllépés 574ms 17740 KiB
28 Időlimit túllépés 569ms 17752 KiB
29 Elfogadva 178ms 33244 KiB
30 Időlimit túllépés 564ms 18112 KiB
31 Időlimit túllépés 551ms 18048 KiB
32 Elfogadva 180ms 33984 KiB
33 Elfogadva 134ms 35580 KiB
34 Időlimit túllépés 583ms 17928 KiB
35 Időlimit túllépés 579ms 17804 KiB