106842024-04-08 09:52:59VargusTestnevelés óracpp17Hibás válasz 17/501.067s35200 KiB
#include <iostream>
#include <queue>
#include <algorithm>
#define ll long long

using namespace std;

struct adat
{
    bool lat, kilep;
    ll ido = 0;
    vector <ll> sz, ut;
};
vector <adat> x;

bool kor = false;
deque <ll> q;
void melyseg(ll csp)
{
    x[csp].lat = true;
    for (auto& e : x[csp].sz)
    {
        x[e].ido += x[csp].ido + 1;
        if (x[e].lat && !x[e].kilep)
        {
            kor = true;
        }
        if (!x[e].lat)
        {
            melyseg(e);
        }
    }
    q.push_front(csp);
    x[csp].kilep = true;
}

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].ut.push_back(cs1);
    }
    ll db = 0;
    for (ll i = 1; i <= n; ++i)
    {
        if (!x[i].ut.size())
        {
            ++db;
            melyseg(i);
            if (kor)
            {
                cout << "0";
                return 0;
            }
        }
    }
    ll ok = false;
    for (ll i = 0; i < q.size() - 1; ++i)
    {
        for (ll j = i + 1; j < q.size(); ++j)
        {
            if (x[q[i]].ido > x[q[j]].ido)
            {
                swap(q[i], q[j]);
                ok = true;
                ++db;
                break;
            }
        }
        if (ok)
            break;
    }
    if (db == 1)
    {
        cout << "1\n";
        for (ll j = 0; j <= q.size() - 1; ++j)
            cout << q[j] << " ";
        return 0;
    }

    else if (db == 0)
    {
        cout << "0";
        return 0;
    }
    else if (db >= 2)
        cout << "2\n";
    {
        for (ll j = 0; j <= q.size() - 1; ++j)
            cout << q[j] << " ";
        for (ll i = 1; i <= q.size() - 1; ++i)
        {
            if (x[q[i]].ido == x[q[i - 1]].ido)
            {
                swap(q[i], q[i - 1]);
                cout << "\n";
                for (ll j = 0; j <= q.size() - 1; ++j)
                    cout << q[j] << " ";
                break;
            }
        }
    }

}
/*
5 3
2 1
3 2
1 5

5 9
3 1
3 5
3 4
4 2
3 2
1 4
1 2
1 5
5 4

5 4
1 2
2 5
1 3
3 4

*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base17/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/03ms2060 KiB
3Elfogadva0/0266ms29488 KiB
4Hibás válasz0/23ms2324 KiB
5Elfogadva3/33ms2400 KiB
6Hibás válasz0/33ms2556 KiB
7Elfogadva3/33ms2824 KiB
8Elfogadva1/13ms2772 KiB
9Elfogadva3/33ms2832 KiB
10Hibás válasz0/34ms3236 KiB
11Hibás válasz0/34ms3464 KiB
12Elfogadva1/14ms3476 KiB
13Hibás válasz0/24ms3484 KiB
14Elfogadva3/34ms3588 KiB
15Hibás válasz0/1217ms22684 KiB
16Elfogadva3/3210ms35024 KiB
17Időlimit túllépés0/51.05s16972 KiB
18Időlimit túllépés0/11.046s24812 KiB
19Hibás válasz0/2248ms23804 KiB
20Időlimit túllépés0/31.055s34808 KiB
21Időlimit túllépés0/41.067s34784 KiB
22Időlimit túllépés0/41.067s35200 KiB