6851 2023. 12. 19 11:44:06 zsebi Testnevelés óra cpp17 Hibás válasz 3/50 365ms 73564 KiB
// testneveles.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <queue>

#define ll long long
using namespace std;
ll n, m;
struct adat
{
    bool lat1 = false,lat=false;
    ll latk = 0,csop;
    vector<ll>sz,sz2;
};
deque<ll>ans, ans2;
vector<adat>x;
bool ok1 = false;
void melyk(int csp)
{
    if (ok1 == true)return;
    x[csp].latk = 1;
    for (auto& e:x[csp].sz)
    {
        if (!x[e].latk)melyk(e);
        else if (x[e].latk != 2)
        {
           
            ok1 = true;
            break;
        }
    }
    x[csp].latk = 2;
}
void mely(int csp,int csop)
{
    x[csp].lat = true;
    x[csp].csop = csop;
    for (auto& e : x[csp].sz2)
        if (!x[e].lat)mely(e,csop);
    //ans.push_front(csp);
}
void mely2(int csp)
{
    x[csp].lat1 = true;
    for (auto& e : x[csp].sz)
        if (!x[e].lat1)mely2(e);
    ans.push_front(csp);
}
void mely3(int csp)
{
    x[csp].lat1 = true;
    for (auto& e : x[csp].sz)
        if (!x[e].lat1)mely2(e);
    ans2.push_front(csp);
}
int main()
{
    cin >> n >> m;
    x.resize(n + 1);
    for (int i = 1; i <= m; ++i)
    {
        ll a, b;
        cin >> a >> b;
        x[a].sz.push_back(b);
        x[a].sz2.push_back(b);
        x[b].sz2.push_back(a);
    }
    bool ok = false, ok2 = false;
    for (int i = 1; i <= n; ++i)
    {
        if (!x[i].latk)melyk(i);
    }
    if (ok1)
    {
        cout << "0";
        return 0;
    }
    int csp=0;
    for (int i = 1; i <= n; ++i)
    {
        
        if (!x[i].lat)
        {
            csp++;
            mely(i,csp);
        }
        cout << i << " " << csp << "\n";
    }
    for (int i = 1; i <= n; ++i)
    {
        if (!x[i].lat1)
        {
            if (x[i].csop != 1)
                mely3(i);
            else mely2(i);
        }
    }
    if (csp>1)
    {
        cout << "2" << "\n";
    }
    else cout << "1"<<"\n";
        for (auto& e : ans)cout << e << " ";
        if (csp>1)
        {
            for (auto& e : ans2)cout << e << " ";
            cout << "\n";
            for (auto& e : ans2)cout << e << " ";
            for (auto& e : ans)cout << e << " ";
        }
    
    return 0;
}

/* 5 9
3 1
3 5
3 4
4 2
3 2
1 4
1 2
1 5
5 4
*/

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Részfeladat Összpont Teszt Verdikt Idő Memória
base 3/50
1 Hibás válasz 0/0 3ms 1808 KiB
2 Hibás válasz 0/0 3ms 2008 KiB
3 Hibás válasz 0/0 333ms 44672 KiB
4 Hibás válasz 0/2 3ms 4704 KiB
5 Hibás válasz 0/3 3ms 5060 KiB
6 Hibás válasz 0/3 3ms 5056 KiB
7 Hibás válasz 0/3 3ms 5012 KiB
8 Elfogadva 1/1 3ms 4968 KiB
9 Hibás válasz 0/3 3ms 4968 KiB
10 Hibás válasz 0/3 4ms 5576 KiB
11 Hibás válasz 0/3 4ms 5852 KiB
12 Elfogadva 1/1 4ms 5744 KiB
13 Hibás válasz 0/2 4ms 6080 KiB
14 Hibás válasz 0/3 4ms 5728 KiB
15 Hibás válasz 0/1 266ms 37060 KiB
16 Hibás válasz 0/3 248ms 46092 KiB
17 Hibás válasz 0/5 115ms 41004 KiB
18 Hibás válasz 0/1 352ms 67272 KiB
19 Részben helyes 1/2 247ms 44784 KiB
20 Hibás válasz 0/3 340ms 65928 KiB
21 Hibás válasz 0/4 342ms 73564 KiB
22 Hibás válasz 0/4 365ms 71508 KiB