179862025-09-24 18:31:18algoproTestnevelés óracpp17Elfogadva 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva0/0194ms7144 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms512 KiB
10Elfogadva3/33ms316 KiB
11Elfogadva3/33ms316 KiB
12Elfogadva1/13ms316 KiB
13Elfogadva2/23ms316 KiB
14Elfogadva3/32ms316 KiB
15Elfogadva1/1167ms4472 KiB
16Elfogadva3/3150ms9892 KiB
17Elfogadva5/557ms10044 KiB
18Elfogadva1/1230ms13400 KiB
19Elfogadva2/2165ms4528 KiB
20Elfogadva3/3200ms11692 KiB
21Elfogadva4/4188ms11768 KiB
22Elfogadva4/4190ms11692 KiB