4846 2023. 03. 31 22:43:56 UnluckY Testnevelés óra cpp11 Elfogadva 50/50 246ms 38876 KiB
#include <bits/stdc++.h>

using namespace std;


vector<vector<int>> v;
vector<int> top, top2, color;
bool circle = false;
vector<bool> seen;


void dfs1(int x){
    if (color[x] == 2){circle = true; return;}
    if (color[x] == 3) return;
    color[x] = 2;

    for (int i : v[x]){
        dfs1(i);
    }

    color[x] = 3;
}

void dfs2(int x){
    if (seen[x]) return;
    seen[x] = true;

    for (int i : v[x]){
        dfs2(i);
    }

    top.push_back(x);

}


void dfs3(int x){
    if (seen[x]) return;
    seen[x] = true;

    for (int i = v[x].size()-1; i >= 0; i--){
        dfs3(v[x][i]);
    }

    top2.push_back(x);

}


int main(){


    int n, k; cin >> n >> k;
    v.assign(n+1, {});
    seen.assign(n+1, false);
    color.assign(n+1, 1);


    for (int i = 0; i < k; i++){

        int a, b; cin >> a >> b;
        v[a].push_back(b);

    }


    for (int i = 1; i <= n; i++){
        if (color[i] == 1) dfs1(i);
        if (circle) break;
    }

    if (circle){
        cout << 0;
        return 0;
    }


    for (int i = 1; i <= n; i++){
        dfs2(i);
    }

    reverse(top.begin(), top.end());
    seen.assign(n+1, false);


    for (int i = n; i >= 1; i--){
        dfs3(i);
    }


    reverse(top2.begin(), top2.end());

    bool one = true;

    for (int i = 0; i < n; i++){
        if (top[i] != top2[i]) one = false;
    }

    if (one){
        cout << 1 << endl;
        for (int i : top){
            cout << i << " ";
        }
        return 0;
    }

    cout << 2 << endl;

    for (int i : top) cout << i << " ";

    cout << endl;

    for (int i : top2) cout << i << " ";


    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1964 KiB
2 Elfogadva 0/0 3ms 2100 KiB
3 Elfogadva 0/0 193ms 14812 KiB
4 Elfogadva 2/2 3ms 2636 KiB
5 Elfogadva 3/3 3ms 2812 KiB
6 Elfogadva 3/3 3ms 2976 KiB
7 Elfogadva 3/3 2ms 2916 KiB
8 Elfogadva 1/1 3ms 2948 KiB
9 Elfogadva 3/3 3ms 3052 KiB
10 Elfogadva 3/3 4ms 3308 KiB
11 Elfogadva 3/3 4ms 3532 KiB
12 Elfogadva 1/1 4ms 3728 KiB
13 Elfogadva 2/2 4ms 3708 KiB
14 Elfogadva 3/3 3ms 3700 KiB
15 Elfogadva 1/1 167ms 11776 KiB
16 Elfogadva 3/3 158ms 21168 KiB
17 Elfogadva 5/5 61ms 19332 KiB
18 Elfogadva 1/1 231ms 26532 KiB
19 Elfogadva 2/2 165ms 12548 KiB
20 Elfogadva 3/3 216ms 33384 KiB
21 Elfogadva 4/4 238ms 38876 KiB
22 Elfogadva 4/4 246ms 38860 KiB