10692 2024. 04. 09 15:49:22 Vargus Testnevelés óra cpp17 Hibás válasz 25/50 263ms 38308 KiB
#include <iostream>
#include <queue>
#include <algorithm>
#define ll long long

using namespace std;

struct adat
{
    bool lat = false;
    ll csop = 1, befok = 0, csp = 0;
    vector <ll> sz;
};
vector <adat> x;

deque <ll> v, poz;
void szelesseg(ll csp)
{
    v.push_front(csp);
    if (!x[csp].lat)
        poz.push_front(csp);
    while (!v.empty())
    {
        ll akt = v.front();
        v.pop_front();
        x[akt].lat = true;
        for (auto& e : x[akt].sz)
        {
            x[e].befok--;
            if (!x[e].befok)
            {
                v.push_front(e);
                x[e].csop = x[akt].csop + 1;
                poz.push_back(e);
            }
        }
    }
}

bool sorts(const adat& a, const adat& b)
{
    return a.csop < b.csop;
}

int main()
{
    ll n, k;
    cin >> n >> k;
    x.resize(n + 1);
    for (ll i = 1; i <= k; ++i)
    {
        ll cs1, cs2;
        cin >> cs1 >> cs2;
        x[cs1].sz.push_back(cs2);
        x[cs2].befok++;
        
    }

    for (ll i = 1; i <= n; ++i)
    {
        x[i].csp = i;
        if (!x[i].befok)
        {
            szelesseg(i);
        }
    }
    sort(x.begin(), x.end(), sorts);
    if (poz.size() != n)
    {
        cout << "0";
        return 0;
    }
    else
    {
        for (ll i = 2; i <= n; ++i)
        {
            if (x[i].csop == x[i - 1].csop)
            {
                cout << "2\n";
                for (ll j = 1; j <= n; ++j)
                    cout << x[j].csp << " ";
                cout << endl;
                swap(x[i].csp, x[i - 1].csp);
                for (ll j = 1; j <= n; ++j)
                    cout << x[j].csp << " ";
                return 0;
            }
        }
        cout << "1\n";
        for (auto& e : poz)
            cout << e << " ";
    }

    return 0;
}
/*
5 9
3 1
3 5
3 4
4 2
3 2
1 4
1 2
1 5
5 4

5 3
2 1
3 2
1 5

4 4
1 2
2 3
3 4
4 2

6 4
3 2
2 1
1 5
4 6

5 4
1 2
1 3
2 5
3 4
*/
Részfeladat Összpont Teszt Verdikt Idő Memória
base 25/50
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 3ms 1932 KiB
3 Hibás válasz 0/0 263ms 21048 KiB
4 Elfogadva 2/2 4ms 2336 KiB
5 Elfogadva 3/3 3ms 2560 KiB
6 Elfogadva 3/3 3ms 2764 KiB
7 Elfogadva 3/3 3ms 2980 KiB
8 Elfogadva 1/1 3ms 3192 KiB
9 Hibás válasz 0/3 3ms 3304 KiB
10 Hibás válasz 0/3 4ms 3604 KiB
11 Hibás válasz 0/3 4ms 3772 KiB
12 Hibás válasz 0/1 4ms 3776 KiB
13 Elfogadva 2/2 4ms 3792 KiB
14 Hibás válasz 0/3 4ms 4028 KiB
15 Elfogadva 1/1 180ms 16420 KiB
16 Hibás válasz 0/3 172ms 27204 KiB
17 Részben helyes 1/5 86ms 29432 KiB
18 Hibás válasz 0/1 254ms 38308 KiB
19 Elfogadva 2/2 168ms 17384 KiB
20 Elfogadva 3/3 259ms 32552 KiB
21 Elfogadva 4/4 221ms 32608 KiB
22 Hibás válasz 0/4 233ms 32772 KiB