/* floyd 传递闭包 开始Floyd 之后统计每个点能到的或能到这个点的 也就是他能和几个人确定胜负关系 第一批要有n-1个 然后每次减掉上一批的人数 麻烦的很 复杂度上天了.... 正难则反 我们考虑一定不能确定排名的 */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 110 using namespace std; int n,m,f[maxn][maxn],ans; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); f[u][v]=1; } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) f[i][j]=f[i][j]||(f[i][k]&&f[k][j]); ans=n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(!f[i][j]&&!f[j][i]&&i!=j) { ans--;break; } printf("%d ",ans); return 0; }