106922024-04-09 15:49:22VargusTestnevelés óracpp17Hibás válasz 25/50263ms38308 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ÖsszpontTesztVerdiktIdőMemória
base25/50
1Elfogadva0/03ms1832 KiB
2Elfogadva0/03ms1932 KiB
3Hibás válasz0/0263ms21048 KiB
4Elfogadva2/24ms2336 KiB
5Elfogadva3/33ms2560 KiB
6Elfogadva3/33ms2764 KiB
7Elfogadva3/33ms2980 KiB
8Elfogadva1/13ms3192 KiB
9Hibás válasz0/33ms3304 KiB
10Hibás válasz0/34ms3604 KiB
11Hibás válasz0/34ms3772 KiB
12Hibás válasz0/14ms3776 KiB
13Elfogadva2/24ms3792 KiB
14Hibás válasz0/34ms4028 KiB
15Elfogadva1/1180ms16420 KiB
16Hibás válasz0/3172ms27204 KiB
17Részben helyes1/586ms29432 KiB
18Hibás válasz0/1254ms38308 KiB
19Elfogadva2/2168ms17384 KiB
20Elfogadva3/3259ms32552 KiB
21Elfogadva4/4221ms32608 KiB
22Hibás válasz0/4233ms32772 KiB