#include #include #include using namespace std; int main(){ while (1){ int n, m; cin >> n >> m; if (n == 0 && m == 0) break; vector > mat = vector >(n); vector > inDegree = vector >(n + 1); vector auxInDegree = vector(n, 0); while (m--){ int d, u; cin >> d >> u; mat[d-1].push_back(u-1); auxInDegree[u-1]++; } for (int i = 0; i < n; i++){ inDegree[ auxInDegree[i] ].insert(i); } int ans = 1; for (int i = 0; i < n; i++){ int sz0 = inDegree[0].size(); if (sz0 == 0){ ans = 0; break; } if (sz0 > 1){ ans = 2; } int x = *(inDegree[0].begin());inDegree[0].erase(x); for (vector::iterator it = mat[x].begin(); it != mat[x].end(); it++){ int y = *it; inDegree[ auxInDegree[y] ].erase(y); auxInDegree[y]--; inDegree[ auxInDegree[y] ].insert(y); } } cout << ans << endl; } return 0; }