/* [NWERC'08] EQUIVALENCES by: Jan Kuipers */ using namespace std; #include #include int N,M; vector u,s; vector > c1,c2; void dfs1 (int n) { if (u[n]) return; u[n]=-1; for (int i=0; i>runs; while (runs--) { cin>>N>>M; c1=c2=vector >(N); for (int i=0; i>a>>b; a--; b--; c1[a].push_back(b); c2[b].push_back(a); } s.clear(); int mark=0; u=vector(N,0); for (int i=0; i=0; i--) if (u[s[i]]==-1) dfs2(s[i], mark++); if (mark==1) { cout<<0< nin(mark,0), nout(mark,0); for (int i=0; i