105112024-04-04 09:59:17RRoliKritikus munkákcpp17Időlimit túllépés 0/100400ms12560 KiB
#include <bits/stdc++.h>
using namespace std;

struct lista{
    int sz;
    lista *kov;
} *elso[100001]={NULL}, *utolso[100001];
int n, m, be[100001], bejart[100001], szam;

void bejar(int k) {
    int eredeti = szam;
    lista *p = elso[k];
    if(p == 0) szam++;
    while(p != 0) {
        bejar(p->sz);
        p = p->kov;
    }
    bejart[k] += (szam - eredeti);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin>> n >> m;

    lista *p;
    for(int i = 1; i <= m; i++) {
        int x, y;
        cin>> x >> y;
        be[y]++;
        p = new lista;
        if(elso[x] == NULL) elso[x] = p;
        else utolso[x]->kov = p;
        p->kov = NULL;
        p->sz = y;
        utolso[x] = p;
    }

    for(int i = 1; i <= n; i++)
        if(be[i] == 0)
            bejar(i);

    int t = 0;
    for(int i = 1; i <= n; i++)
        if(bejart[i] == szam)
            t++;

    cout << t << endl;
    for(int i = 1; i <= n; i++)
        if(bejart[i] == szam)
            cout << i << ' ';


    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1912 KiB
2Időlimit túllépés400ms7492 KiB
subtask20/25
3Elfogadva3ms2440 KiB
4Időlimit túllépés400ms2660 KiB
5Időlimit túllépés372ms3080 KiB
6Időlimit túllépés349ms2952 KiB
7Elfogadva14ms3408 KiB
subtask30/25
8Időlimit túllépés400ms4028 KiB
9Időlimit túllépés356ms2932 KiB
10Időlimit túllépés381ms3004 KiB
11Időlimit túllépés374ms3388 KiB
12Időlimit túllépés368ms3364 KiB
subtask40/25
13Elfogadva41ms11564 KiB
14Időlimit túllépés400ms7316 KiB
15Időlimit túllépés400ms7244 KiB
16Időlimit túllépés368ms7432 KiB
17Időlimit túllépés354ms7316 KiB
subtask50/25
18Időlimit túllépés377ms12560 KiB
19Időlimit túllépés374ms12420 KiB
20Időlimit túllépés377ms12428 KiB
21Időlimit túllépés374ms12528 KiB
22Időlimit túllépés374ms12404 KiB