51962023-04-21 20:39:45ZsofiaKeresztelyDinókcpp14Hibás válasz 35/100136ms23020 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g, comp;
vector<int> ind, tops, inq, op;
int n, last = -1;

void bfs(){
    deque<int> q;
    for (int i=1; i<=n; i++){
        if (!ind[i]){
            q.push_front(i);
        }
    }
    while (!q.empty()){
        int v = q.front();
        q.pop_front();
        if (op[v]) continue;
        if (inq[v] > 0) return;
        int ok = 0;
        if (!inq[v]){
            last -= 2;
            ok = comp[v].size();
        }
        else{
            inq[v] = 0;
            for (int x : comp[v]){
                if (inq[x] < 0){
                    inq[v]++;
                }
                else{
                    inq[x]--;
                    if (!inq[x]) ok++;
                }
            }
        }
        if (ok == comp[v].size()){
            last += 2;
            op[v] = last;
            for (int x : comp[v]){
                q.push_front(x);
            }
            for (int x : g[v]){
                ind[x]--;
                if (!ind[x]) q.push_back(x);
            }
        }
    }
}

int main()
{
    int m;
    cin >> n >> m;
    g.resize(n+1);
    comp.resize(n+1);
    inq.assign(n+1, -1);
    ind.assign(n+1, 0);
    op.resize(n+1, 0);
    while (m--){
        int t, a, b;
        cin >> t >> a >> b;
        if (t == 2){
            g[a].push_back(b);
            ind[b]++;
        }
        else{
            comp[a].push_back(b);
            comp[b].push_back(a);
        }
    }
    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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1812 KiB
2Elfogadva3ms1968 KiB
3Elfogadva7ms3464 KiB
subtask20/5
4Hibás válasz109ms20296 KiB
5Hibás válasz59ms18796 KiB
6Hibás válasz32ms17360 KiB
subtask30/15
7Elfogadva3ms2896 KiB
8Elfogadva3ms3108 KiB
9Elfogadva3ms3224 KiB
10Hibás válasz2ms3220 KiB
11Hibás válasz3ms3228 KiB
12Elfogadva3ms3304 KiB
subtask40/10
13Hibás válasz3ms3552 KiB
14Hibás válasz3ms3592 KiB
15Elfogadva3ms3676 KiB
16Elfogadva3ms3804 KiB
17Hibás válasz3ms3804 KiB
subtask535/35
18Elfogadva3ms3808 KiB
19Elfogadva3ms4064 KiB
20Elfogadva136ms19996 KiB
21Elfogadva133ms19996 KiB
22Elfogadva3ms3968 KiB
23Elfogadva3ms4036 KiB
24Elfogadva108ms20128 KiB
subtask60/35
25Hibás válasz112ms22544 KiB
26Hibás válasz109ms22500 KiB
27Hibás válasz111ms22500 KiB
28Hibás válasz108ms22496 KiB
29Elfogadva108ms22756 KiB
30Hibás válasz112ms22628 KiB
31Hibás válasz108ms22668 KiB
32Elfogadva108ms22756 KiB
33Elfogadva107ms21692 KiB
34Hibás válasz111ms23020 KiB
35Elfogadva108ms22500 KiB