182562025-10-16 17:01:59TakacsAndrasTestnevelés óracpp17Accepted 50/50231ms19428 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,k; cin >> n >> k;
    vector<vector<int>> g(n+1);
    vector<int> f(n+1);
    for (int i = 0; i < k; i++) {
        int a,b; cin >> a >> b;
        g[a].push_back(b);
        f[b]++;
    }
    queue<pair<int,int>> q;
    for (int i = 1; i <= n; i++) {
        if (f[i] == 0) {
            q.push({i,0});
        }
    }
    vector<vector<int>> out;
    int cnt = 0;
    while (!q.empty()) {
        int u = q.front().first, nm = q.front().second;
        q.pop();
        if (nm >= out.size()) out.push_back({u});
        else out.back().push_back(u);
        cnt++;
        for (int x : g[u]) {
            if (--f[x] == 0) q.push({x,nm+1});
        }
    }
    if (cnt != n) cout << "0\n";
    else {
        if (out.size() == n) {
            cout << "1\n";
            for (int i = 0; i < n; i++) cout << out[i][0] << ' ';
            cout << '\n';
        }
        else {
            cout << "2\n";
            for (int i = 0; i < out.size(); i++) {
                for (int j = 0; j < out[i].size(); j++) cout << out[i][j] << ' ';
            }
            cout << '\n';
            for (int i = 0; i < out.size(); i++) {
                for (int j = out[i].size()-1; j >= 0; j--) cout << out[i][j] << ' ';
            }
            cout << '\n';
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted0/0196ms7220 KiB
4Accepted2/21ms316 KiB
5Accepted3/31ms508 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms328 KiB
8Accepted1/11ms512 KiB
9Accepted3/31ms316 KiB
10Accepted3/33ms316 KiB
11Accepted3/33ms316 KiB
12Accepted1/13ms500 KiB
13Accepted2/23ms380 KiB
14Accepted3/32ms316 KiB
15Accepted1/1168ms6640 KiB
16Accepted3/3140ms10224 KiB
17Accepted5/548ms10928 KiB
18Accepted1/1231ms13932 KiB
19Accepted2/2179ms7072 KiB
20Accepted3/3208ms19376 KiB
21Accepted4/4208ms19428 KiB
22Accepted4/4210ms19424 KiB