2046 2022. 12. 15 21:36:36 TomaSajt Testnevelés óra cpp17 Elfogadva 50/50 116ms 27856 KiB
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0);cin.tie(0)
using namespace std;

int main() {
    speed;
    int n, k;
    cin >> n >> k;
    vector<vector<int>> g(n + 1);
    vector<int> deps(n + 1);
    while (k--) {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        deps[v]++;
    }
    queue<int> q;
    for (int i = 1; i <= n; i++) {
        if (deps[i] == 0) g[0].push_back(i), deps[i]++;
    }
    q.push(0);
    int a = -1, b = -1;
    vector<int> ord;
    while (!q.empty()) {
        int u = q.front(); q.pop();
        if (u != 0) ord.push_back(u);
        vector<int> nexts;
        for (auto v : g[u]) {
            if (--deps[v] == 0) nexts.push_back(v);
        }
        if (a == -1 && nexts.size() > 1) a = nexts[0], b = nexts[1];
        for (auto v : nexts) q.push(v);

    }
    if (count(deps.begin() + 1, deps.end(), 0) != n) {
        cout << '0';
        return 0;
    }
    cout << (b == -1 ? 1 : 2) << '\n';
    for (auto e : ord) cout << e << ' ';
    cout << '\n';
    if (b != -1) {
        for (auto e : ord) cout << (e == a ? b : e == b ? a : e) << ' ';
        cout << '\n';
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 2ms 2056 KiB
3 Elfogadva 0/0 86ms 14192 KiB
4 Elfogadva 2/2 2ms 2324 KiB
5 Elfogadva 3/3 2ms 2552 KiB
6 Elfogadva 3/3 2ms 2632 KiB
7 Elfogadva 3/3 2ms 2904 KiB
8 Elfogadva 1/1 2ms 3072 KiB
9 Elfogadva 3/3 2ms 3276 KiB
10 Elfogadva 3/3 3ms 3584 KiB
11 Elfogadva 3/3 3ms 3800 KiB
12 Elfogadva 1/1 3ms 3976 KiB
13 Elfogadva 2/2 3ms 3928 KiB
14 Elfogadva 3/3 3ms 4200 KiB
15 Elfogadva 1/1 68ms 11884 KiB
16 Elfogadva 3/3 81ms 20732 KiB
17 Elfogadva 5/5 48ms 22000 KiB
18 Elfogadva 1/1 116ms 27856 KiB
19 Elfogadva 2/2 68ms 12316 KiB
20 Elfogadva 3/3 108ms 24032 KiB
21 Elfogadva 4/4 107ms 24036 KiB
22 Elfogadva 4/4 107ms 24100 KiB