题目连接
N头牛,M个关系,(A,B)表示A赢了B
问有多少头牛可以确定最终排名。
首先要确定一头牛的排名必须比完才知道。
根据floyd把胜负传递过去 即 C输给了A,A输给了B 那么必定会存在C输给B
然后统计就OK了
ll G[200][200];
signed main(){
ll n,m;
read(n);
read(m);
for(int i=1;i<=m;i++){
ll x,y;
read(x);
read(y);
G[y][x]=1;
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
{
if(G[i][j])continue;
G[i][j]=G[i][k]&G[k][j];
}
}
}
ll ans=0;
for(int i=1;i<=n;i++){
ll f=0;
for(int j=1;j<=n;j++){
if(i==j)continue;
if(!(G[i][j]^G[j][i])){f=1;break;}
}
if(!f)ans++;
}
printf("%lld",ans);
}