179642025-09-24 17:53:12algoproTestnevelés óracpp17Wrong answer 9/50238ms20420 KiB
// UUID: 66693a05-ed2a-4753-aeac-98b6417fc799
#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]<<" ";
            }
            swap(ans[ind],ans[ind+1]);
            for (int i=0; i<n; i++){
                cout<<ans[i]<<" ";
            }
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base9/50
1Accepted0/01ms316 KiB
2Wrong answer0/01ms316 KiB
3Wrong answer0/0207ms7084 KiB
4Wrong answer0/21ms316 KiB
5Partially correct1/31ms316 KiB
6Wrong answer0/31ms508 KiB
7Wrong answer0/31ms328 KiB
8Accepted1/11ms316 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/33ms316 KiB
11Wrong answer0/33ms316 KiB
12Accepted1/13ms456 KiB
13Accepted2/23ms620 KiB
14Wrong answer0/32ms316 KiB
15Accepted1/1168ms4520 KiB
16Wrong answer0/3157ms10156 KiB
17Partially correct1/559ms9184 KiB
18Wrong answer0/1238ms13224 KiB
19Accepted2/2159ms4524 KiB
20Wrong answer0/3193ms16300 KiB
21Wrong answer0/4225ms20420 KiB
22Wrong answer0/4187ms17836 KiB