题意:n头牛比赛有m场胜负,判断有几头牛的排名知道。
思路:只是分析一下情况就行。用floyd很适合。
注意:牛对自己不比赛。
#include<cstdio>
#include<cstring>
int gragh[105][105];
int n,m;
int ans;
void floyd()
{
int i,j,k;
for(k = 1;k <= n; k++)
for(i = 1;i <= n; i++)
for(j = 1;j <= n; j++){
if(gragh[i][k] == 1 && gragh[k][j] == 1)
gragh[i][j] = 1;
if(gragh[i][k] == 0 && gragh[k][j] == 0)
gragh[i][j] = 0;
}
ans = 0;
for(int i = 1;i <= n; i++){
int flag = 1;
for(int j = 1;j <= n; j++){
if(gragh[i][j] == -1 && i != j)
flag = 0;
}
if(flag)
ans++;
}
}
int main()
{
// freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
memset(gragh,-1,sizeof(gragh));
int w,l;
for(int i = 1;i <= m; i++){
scanf("%d%d",&w,&l);
gragh[w][l] = 1;
gragh[l][w] = 0;
}
floyd();
printf("%d\n",ans);
return 0;
}