1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include<bits/stdc++.h>
using namespace std;

int n, m, a, b, l, cykle, licz, odw[500111], w[500111], stos[500111], s = 1;
vector<int> v[500111];

void DFS(int u){
    odw[u] = 1;
    stos[s] = u; s++;
    for( int i = 0; i<v[u].size(); i++ ){
        int r = v[u][i];
        if( odw[r]==0 )
            DFS(r);
        if( odw[r]==1 ){
            cykle++;
            w[r]++;
            for( int j = s-1; stos[j]!=r; j-- ){
                 w[stos[j]]++;
            }

        }
    }
    s--;
    odw[u] = 0;
}

void DFS2(int u){
    odw[u] = 2;
    for( int i = 0; i<v[u].size(); i++ ){
        int r = v[u][i];
        if( odw[r]==0 ){
            DFS2(r);
        }
    }
}

int main()
{
    scanf("%d%d", &n, &m);
    for( int i = 0; i<m; i++ ){
        scanf("%d%d", &a, &b);
        v[a].push_back(b);
    }

    for( int i = 1; i<=n; i++ )
        if( odw[i]==0 ){
            DFS(i);
            DFS2(i);
        }

    /*printf("cykle: %d\n", cykle);
    for( int i = 1; i<=n; i++ )
        printf("%d ", w[i]);
    printf("\n");*/
    if( cykle==0 )
        printf("NIE");
    else{
        for( int i = 1; i<=n; i++ )
            if( w[i]==cykle )
                licz++;
        printf("%d\n", licz);
        for( int i = 1; i<=n; i++ )
            if( w[i]==cykle )
                printf("%d ", i);
    }
    return 0;
}

/*

9 12
1 2
1 3
3 2
2 4
4 5
5 8
8 9
9 5
5 6
5 7
6 7
7 1

9 11
1 2
2 3
3 4
4 5
5 2
5 6
6 2
4 7
7 8
8 9
9 4

10 18
1 2
1 10
3 2
1 4
1 5
5 4
6 2
6 3
5 7
5 6
5 8
7 8
9 8
6 9
6 8
6 10
10 3
10 9

11 16
1 2
2 3
3 1
1 4
4 5
5 1
1 6
6 7
7 1
5 8
8 4
9 7
6 9


*/