106042024-04-06 14:24:33AblablablaKritikus munkákcpp17Accepted 100/100202ms40152 KiB
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> csucsok;

int main()
{
    int n, m;
    cin >> n >> m;

    csucsok.assign(n, vector<int>());
    vector<int> befok(n);
    for(int i = 0; i < m; i++){
        int a, b;
        cin >> a >> b;
        a--; b--;

        csucsok[a].push_back(b);
        befok[b]++;
    }

    queue<int> bejar;
    vector<bool> bejart(n, 0);
    vector<vector<int>> szintek(1, vector<int>());
    vector<int> tav(n, 0);
    for(int i = 0; i < n; i++){
        if(befok[i] == 0){
            bejar.push(i);
            szintek[0].push_back(i);
        }
    }

    while(!bejar.empty()){
        int akt = bejar.front();
        bejar.pop();

        if(bejart[akt]) continue;

        bejart[akt] = 1;

        for(int x : csucsok[akt]){
            if(bejart[x]) continue;

            befok[x]--;

            if(befok[x] == 0){
                bejar.push(x);
                tav[x] = tav[akt] + 1;
                if(szintek.size() <= tav[x]){
                    szintek.push_back(vector<int>());
                }

                szintek[tav[x]].push_back(x);
            }
        }
    }

    // egyedul van a layereben
    // folotte levoknek nincs kapcsolat az alatta levokkel

    int maxi = 0;
    vector<int> jok;
    for(int i = 0; i < szintek.size(); i++){
        if(szintek[i].size() == 1 && maxi <= i){
            jok.push_back(szintek[i][0] + 1);
        }

        for(int akt : szintek[i]){
            for(int x : csucsok[akt]){
                maxi = max(maxi, tav[x]);
            }
        }
    }

    sort(jok.begin(), jok.end());
    cout << jok.size() << "\n";
    for(int x : jok){
        cout << x << " ";
    }
    cout << "\n";
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1952 KiB
2Accepted123ms13244 KiB
subtask225/25
3Accepted3ms3904 KiB
4Accepted3ms4068 KiB
5Accepted4ms4468 KiB
6Accepted3ms4504 KiB
7Accepted6ms4916 KiB
subtask325/25
8Accepted34ms6560 KiB
9Accepted14ms6544 KiB
10Accepted14ms7028 KiB
11Accepted25ms7516 KiB
12Accepted25ms7828 KiB
subtask425/25
13Accepted83ms14056 KiB
14Accepted97ms17700 KiB
15Accepted94ms19876 KiB
16Accepted89ms21104 KiB
17Accepted90ms22232 KiB
subtask525/25
18Accepted199ms31640 KiB
19Accepted194ms35528 KiB
20Accepted202ms37908 KiB
21Accepted186ms38892 KiB
22Accepted178ms40152 KiB