179862025-09-24 18:31:18algoproTestnevelés óracpp17Accepted 50/50230ms13400 KiB
// UUID: ca3285d3-37c6-4f83-b061-8e0c9458068c
#include <algorithm>
#include <bits/stdc++.h>
#include <climits>
#include <queue>
#include <vector>
using namespace std;

//A maximális int az 2^31-1 ami nagyobb mint 10^9 de kisseb mint 10^10

int main() {
int n, t;
    cin >> n >> t;

    vector<vector<int>> fa(n);
    vector<int> sz(n, 0);

    for (int i = 0; i < t; i++) {
        int a, b;
        cin >> a >> b;
        a--, b--;
        fa[a].push_back(b);
        sz[b]++;
    }

    queue<int> q;
    for (int i = 0; i < n; i++) {
        if (sz[i] == 0) q.push(i);
    }

    vector<int> lista;
    int count = 0;

    int where = 0;

    while (!q.empty()) {
        // if (q.size() > 1) count++; 
        if (q.size() > 1) { count = 1; where = lista.size(); }

        int u = q.front();
        q.pop();
        lista.push_back(u);

        for (int v : fa[u]) {
            sz[v]--;
            if (sz[v] == 0) q.push(v);
        }
    }

    if ((int)lista.size() != n) {
        cout << 0;
        return 0;
    }

    cout << count+1 << "\n";
    for (int x : lista) cout << x + 1 << " ";
    cout << "\n";

    if (count == 1) {
        swap(lista[where], lista[where + 1]);
        for (int x : lista) cout << x + 1 << " ";
        cout << "\n";
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms508 KiB
3Accepted0/0194ms7144 KiB
4Accepted2/21ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted1/11ms316 KiB
9Accepted3/31ms512 KiB
10Accepted3/33ms316 KiB
11Accepted3/33ms316 KiB
12Accepted1/13ms316 KiB
13Accepted2/23ms316 KiB
14Accepted3/32ms316 KiB
15Accepted1/1167ms4472 KiB
16Accepted3/3150ms9892 KiB
17Accepted5/557ms10044 KiB
18Accepted1/1230ms13400 KiB
19Accepted2/2165ms4528 KiB
20Accepted3/3200ms11692 KiB
21Accepted4/4188ms11768 KiB
22Accepted4/4190ms11692 KiB