180482025-09-25 18:29:18algoproTestnevelés óracpp17Hibás válasz 2/5071ms10908 KiB
// UUID: a1935bf0-59f7-4e10-a660-324842556c0e
#include <bits/stdc++.h>
#include <vector>
#include <numeric>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, k; cin >> n >> k;
    vector<vector<int>> g(n + 1);
    vector<int> beelek(n + 1, 0);
    vector<vector<int>> solutions(2);
    for (int i = 0; i < k; i++) {
        int a, b; cin >> a >> b;
        g[b].push_back(a);
        beelek[b]++;
    }
    beelek[0] = -1;
    while (!all_of(begin(beelek), end(beelek), [](int i) { return i < 0; })) {
        vector<int> forrasok;
        for (int i = 1; i <= n; i++) {
            if (beelek[i] == 0) {
                forrasok.push_back(i);
            }
        }
        if (forrasok.size() == 0) {
            cout << 0; return 0;
        }
        else {
            for (int i = 0; i < forrasok.size(); i++) {
                solutions[0].push_back(forrasok[i]);
                solutions[1].push_back(forrasok[forrasok.size() - 1 - i]);
            }
        }
        for (int j : forrasok) {
            beelek[j]--;        
        }
    }
    int o = 1;
    for (int i = 0; i < n; i++) {
        if (solutions[0][i] != solutions[1][i]) {
            o = 2; break;
        }
    }
    cout << o << endl;
    for (int i : solutions[0]) {
        cout << i << " ";
    }
    cout << endl;
    if (o == 2) {
        for (int i : solutions[1]) {
            cout << i << " ";
        }
    }
}

// using namespace std;

// int main() {
//     ios::sync_with_stdio(false);
//     cin.tie(0);
//     int n, k; cin >> n >> k;
//     vector<vector<int>> g(n + 1);
//     vector<int> beelek(n + 1, 0);
//     vector<vector<int>> solutions(2);
//     for (int i = 0; i < k; i++) {
//         int a, b; cin >> a >> b;
//         g[a].push_back(b);
//         beelek[b]++;
//     }
//     beelek[0] = -1;
//     // sor letrehozas
//     queue<int> forrasok;
//     vector <int> sorrend;
//     // sorba bepakoljuk az osszes forrast
//     for (int i = 1; i <= n; i++) {
//         if (beelek[i] == 0) {
//             forrasok.push(i);
//         }
//     }
//     while (forrasok.size() != 0) {
//         // kiszedunk 1 forrast a sorbol
//         // toroljuk az ő éleit és a sorrend végére tesszük

//         int x = forrasok.front();
//         forrasok.pop();
//         sorrend.push_back(x);

//         for (int i : g[x]){
//             --beelek[i];
//             if(beelek[i] == 0) forrasok.push(i);
//         }
//     }

//     if (sorrend.size()<n){
//         cout<<0; return 0;
//     }
//     for(int i = 0; i < n; i++){
//         cout<<sorrend[i];
//     }
// }


// /*


// beolvasasás
// befokok számolása

// sor létrehozása
// források a sorba

// queue <int> q;
// vector <int> ans;

// while (q.size()>0){
    
//     int x = q.front();
//     q.pop();

//     for (int y : g[x]) {
//         y befokát csökkentem
//         ha 0-ra csökkent, akkor beteszem a sorba
//     }

// }

// ans mérete alapján eldöntöm

// ----------------------------------------

// Létezik-e több?


// */
RészfeladatÖsszpontTesztVerdiktIdőMemória
base2/50
1Hibás válasz0/01ms500 KiB
2Hibás válasz0/01ms316 KiB
3Hibás válasz0/071ms5940 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/31ms316 KiB
6Hibás válasz0/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/32ms316 KiB
11Hibás válasz0/31ms488 KiB
12Elfogadva1/12ms464 KiB
13Hibás válasz0/22ms316 KiB
14Hibás válasz0/31ms316 KiB
15Hibás válasz0/159ms3708 KiB
16Hibás válasz0/356ms7072 KiB
17Hibás válasz0/512ms9088 KiB
18Hibás válasz0/171ms10908 KiB
19Hibás válasz0/261ms3872 KiB
20Hibás válasz0/357ms9076 KiB
21Hibás válasz0/464ms9188 KiB
22Hibás válasz0/457ms9112 KiB