155312025-02-20 11:03:31999Testnevelés óracpp17Elfogadva 50/50277ms22268 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

vector<int> vis;

bool dfs(vector<vector<int>>& v, int node){
    vis[node]=1;
    bool jo=true;
    for(int i : v[node]){
        if(vis[i]==1)return false;
        else if(vis[i]==0){
            jo&=dfs(v,i);
        }
    }
    vis[node]=2;
    return jo;
}

int main() {
    int n,k;cin>>n>>k;
    vector<vector<int>> v(n);
    vis.resize(n);
    vector<int> befok(n);
    for(int i = 0;i<k;i++){
        int a,b;cin>>a>>b;
        v[--a].push_back(--b);
        befok[b]++;
    }
    bool jo=true;
    for(int i = 0;i<n;i++){
        if(vis[i]==0){
            if(!dfs(v,i)){
                jo=false;
                break;
            }
        }
    }
    if(jo==false){
        cout<<0<<endl;
        return 0;
    }
    vector<int> top,bf;
    bf=befok;
    queue<int> q;
    for(int i = 0;i<n;i++){
        if(befok[i]==0)q.push(i);
    }
    bool egy=true;
    while(!q.empty()){
        if(q.size()>1&&egy){
            egy=false;
            int temp=q.front();
            q.pop();
            q.push(temp);
        }
        int node=q.front();
        q.pop();
        top.push_back(node);
        for(int i : v[node]){
            befok[i]--;
            if(befok[i]==0){
                q.push(i);
            }
        }
    }
    if(egy){
        cout<<1<<endl;
        for(int i : top)cout<<i+1<<' ';
    }
    else{
        cout<<2<<endl;
        for(int i : top)cout<<i+1<<' ';
        cout<<endl;
        vector<int> top2;
        for(int i = 0;i<n;i++){
            if(bf[i]==0)q.push(i);
        }
        while(!q.empty()){
            int node=q.front();
            q.pop();
            top2.push_back(node);
            for(int i : v[node]){
                bf[i]--;
                if(bf[i]==0){
                    q.push(i);
                }
            }
        }
        for(int i : top2)cout<<i+1<<' ';
    } 
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0197ms8500 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/33ms316 KiB
11Elfogadva3/33ms316 KiB
12Elfogadva1/12ms316 KiB
13Elfogadva2/23ms316 KiB
14Elfogadva3/32ms316 KiB
15Elfogadva1/1173ms4760 KiB
16Elfogadva3/3172ms11564 KiB
17Elfogadva5/550ms12520 KiB
18Elfogadva1/1226ms15740 KiB
19Elfogadva2/2165ms5040 KiB
20Elfogadva3/3221ms17980 KiB
21Elfogadva4/4277ms22268 KiB
22Elfogadva4/4254ms19756 KiB