239182026-01-31 18:38:54algoproTestnevelés óracpp17Elfogadva 50/50495ms43676 KiB
// UUID: 39f9d0ac-70f7-40e4-a897-f3f4dafa9bac
#include <bits/stdc++.h>

#define f(i, n) for(int i = 0; i < n; i++)
#define fr(i, n, s) for(int i = s; i >= n; i--)
#define fs(i, n, s) for(int i = s; i < n; i++)
#define all(v) (v).begin(), (v).start()
#define rall(v) (v).rbegin(), (v).rend()

using namespace std;

template <typename T>
using v = vector<T>;

typedef long long ll;
typedef unsigned u;
typedef unsigned short us;
typedef unsigned long long ull;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    
    int n, k;
    cin >> n >> k;

    v<set<int>> s(n), t(n);
    v<int> cnt(n);
    f(i, k) {
        int a, b;
        cin >> a >> b;
        a--; b--;

        s[b].insert(a); cnt[b]++;
        t[a].insert(b);

        if (s[a].count(b) || t[b].count(a)) {
            cout << 0;
            return 0;
        }
    }

    v<int> end, start;
    f(i, n) {
        if (t[i].empty()) end.push_back(i);
        if (s[i].empty()) start.push_back(i);
    }

    if (end.empty() || start.empty()) {
        cout << 0;
        return 0;
    }

    pair<int, int> idk = {-1, -1};
    v<int> crnt = start, sol, next;
    while (!crnt.empty()) {
        if (crnt.size() != 1) {
            idk = {crnt[0], crnt[1]};
        }
        for (int i : crnt) {
            for (int j : t[i]) {
                if (--cnt[j] == 0) next.push_back(j);
                else if (cnt[j] < 0) {
                    cout << 0;
                    return 0;
                }
            }
            sol.push_back(i);
        }
        crnt = next; next.clear();
    }

    if (idk.first == -1) {
        cout << 1 << endl;
        for (int i : sol) cout << i + 1 << ' ';
    } else {
        cout << 2 << endl;
        for (int i : sol) cout << i + 1 << ' ';
        cout << endl;

        for (int i : sol) {
            if (i == idk.first) cout << idk.second + 1 << ' ';
            else if (i == idk.second) cout << idk.first + 1 << ' ';
            else cout << i + 1 << ' ';
        }
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0389ms30636 KiB
4Elfogadva2/21ms500 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/33ms608 KiB
11Elfogadva3/33ms820 KiB
12Elfogadva1/12ms564 KiB
13Elfogadva2/23ms756 KiB
14Elfogadva3/32ms540 KiB
15Elfogadva1/1282ms24504 KiB
16Elfogadva3/3170ms26560 KiB
17Elfogadva5/557ms25700 KiB
18Elfogadva1/1495ms43676 KiB
19Elfogadva2/2266ms24752 KiB
20Elfogadva3/3207ms31656 KiB
21Elfogadva4/4275ms31676 KiB
22Elfogadva4/4195ms31660 KiB