传递闭包裸题。
如果一头奶牛和其他\(n-1\)头奶牛的大小关系都确定了,那么该奶牛的排名可唯一确定。
或者说,比它强的奶牛的数量加上比它弱的奶牛的数量等于\(n-1\),就可唯一确定该奶牛的名次。
const int N=110;
bool g[N][N];
int n,m;
void floyd()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
g[i][j] |= g[i][k] & g[k][j];
}
int main()
{
cin>>n>>m;
while(m--)
{
int a,b;
cin>>a>>b;
g[a][b]=true;
}
floyd();
int res=0;
for(int i=1;i<=n;i++)
{
int cnt=0;
for(int j=1;j<=n;j++)
if(g[i][j] || g[j][i])
cnt++;
if(cnt == n-1) res++;
}
cout<<res<<endl;
//system("pause");
return 0;
}