179122025-09-22 18:23:42algoproTestnevelés óracpp17Accepted 50/50261ms25872 KiB
// UUID: dbbbf715-6c76-4d6e-ac4b-77ad6eff8074
#include <bits/stdc++.h>
using namespace std;

int n, k;
vector<int> topology;
vector<bool> vis;   
vector<vector<int>> adj;
vector<int> in_nodes;
vector<bool> active;

void dfs(int v){
    vis[v] = true;
    //cout << "belép: " << v << '\n';
    for(auto x : adj[v]){
        if(!vis[x]){
            dfs(x);
        }else if(active[x]){
            cout << 0 << '\n';
            exit(0);
        }else{
        }
    }
    //cout << "elhagy: " << v << '\n';
    active[v] = false;
    topology.push_back(v);
}

bool is_edge(int v1, int v2){
    for(auto x : adj[v1]) if(x == v2) return true;
    for(auto x : adj[v2]) if(x == v1) return true;
    return false;
}

int main() {
	cin >> n >> k;
    vis.resize(n+1, false);
    active.resize(n+1, true);
    in_nodes.resize(n+1, 0);
    adj.resize(n+1, vector<int>());
    for(int i=1;i<=k;i++){
        int a, b;
        cin >> a >> b;
        adj[a].push_back(b);
        in_nodes[b]++;
    }
    for(int i=1;i<=n;i++){
        if(!in_nodes[i]){
            dfs(i);
        }
    }
    if(topology.size() == 0){
        cout << 0 << '\n';
        return 0;
    }
    reverse(topology.begin(), topology.end());

    int ans = 1;
    for(int i=0;i<topology.size()-1;i++){
        if(!is_edge(topology[i+1], topology[i])) ans = 2;
    }
    cout << ans << '\n';
    for(auto x : topology) cout << x << ' ';
    if(ans == 2){
        cout << '\n';
        for(int i=0;i<topology.size();i++){
            if(i+1 < n && !is_edge(topology[i+1], topology[i])){
                cout << topology[i+1] << ' ' << topology[i] << ' ';
                i++;
            }else{
                cout << topology[i] << ' ';
            }
        }
    }

}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms508 KiB
2Accepted0/01ms316 KiB
3Accepted0/0209ms7080 KiB
4Accepted2/21ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted1/11ms348 KiB
9Accepted3/31ms500 KiB
10Accepted3/33ms316 KiB
11Accepted3/33ms316 KiB
12Accepted1/12ms316 KiB
13Accepted2/23ms316 KiB
14Accepted3/32ms500 KiB
15Accepted1/1157ms4412 KiB
16Accepted3/3172ms10300 KiB
17Accepted5/546ms9228 KiB
18Accepted1/1221ms12964 KiB
19Accepted2/2158ms4780 KiB
20Accepted3/3261ms25764 KiB
21Accepted4/4256ms25872 KiB
22Accepted4/4197ms25712 KiB