179642025-09-24 17:53:12algoproTestnevelés óracpp17Hibás válasz 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]<<" ";
            }
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base9/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms316 KiB
3Hibás válasz0/0207ms7084 KiB
4Hibás válasz0/21ms316 KiB
5Részben helyes1/31ms316 KiB
6Hibás válasz0/31ms508 KiB
7Hibás válasz0/31ms328 KiB
8Elfogadva1/11ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/33ms316 KiB
11Hibás válasz0/33ms316 KiB
12Elfogadva1/13ms456 KiB
13Elfogadva2/23ms620 KiB
14Hibás válasz0/32ms316 KiB
15Elfogadva1/1168ms4520 KiB
16Hibás válasz0/3157ms10156 KiB
17Részben helyes1/559ms9184 KiB
18Hibás válasz0/1238ms13224 KiB
19Elfogadva2/2159ms4524 KiB
20Hibás válasz0/3193ms16300 KiB
21Hibás válasz0/4225ms20420 KiB
22Hibás válasz0/4187ms17836 KiB