179672025-09-24 17:55:52algoproTestnevelés óracpp17Elfogadva 50/50234ms20396 KiB
// UUID: c11e3124-dd2e-4cfb-aad7-42e0df5b4353
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> graf;
vector<int> vis;
bool kor=false;
vector<int> ans;

void dfs(int x){
    vis[x]=1;
    for (int i:graf[x]){
        if (vis[i]==0) dfs(i);
        else if (vis[i]==1) kor=true;
    }
    ans.push_back(x);
    vis[x]=2;
}

int main() {
	int n,k; cin>>n>>k;
    int a,b; 
    graf.resize(n);
    vis.resize(n,0);
    for (int i=0; i<k; i++){
        cin>>a>>b;
        a--; b--;
        graf[a].push_back(b);
    }
    for (int i=0; i<n; i++){
        if (vis[i]==0) dfs(i);
    }
    if (kor) cout<<0<<endl;
    else{ 
        int ind=-1;
        reverse(ans.begin(),ans.end());
        for (int i=0; i<n-1; i++){
            bool g=false;
            for (int j:graf[ans[i]]){
                if (j==ans[i+1]){
                    g=true;
                }
            }
            if (!g) ind=i;
        }
        if (ind==-1){
            cout<<1<<endl;
            for (int i:ans) cout<<i+1<<" ";
        }
        else {
            cout<<2<<endl;
            for (int i=0; i<n; i++){
                cout<<ans[i]+1<<" ";
            } 
            cout<<endl;
            swap(ans[ind],ans[ind+1]);
            for (int i=0; i<n; i++){
                cout<<ans[i]+1<<" ";
            }
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0196ms7080 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/33ms508 KiB
11Elfogadva3/33ms316 KiB
12Elfogadva1/12ms316 KiB
13Elfogadva2/23ms316 KiB
14Elfogadva3/32ms316 KiB
15Elfogadva1/1156ms4484 KiB
16Elfogadva3/3164ms10104 KiB
17Elfogadva5/557ms9280 KiB
18Elfogadva1/1234ms13224 KiB
19Elfogadva2/2157ms4764 KiB
20Elfogadva3/3194ms16224 KiB
21Elfogadva4/4221ms20396 KiB
22Elfogadva4/4187ms17836 KiB