this is the original question
this question tell us to check if one cow’s rank can be determined.It means we should think the relationship as a graph , each cow in the graph is nodes and their relationship is none_directed edges so we can use floyd to calculate the connectivity of nodes and than print the answer
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
#include <queue>
#include <stack>
#define inf 0x3f3f3f3f
#define maxn 105
using namespace std;
int maps[maxn][maxn];
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++)
{
maps[i][j] = maps[i][j] || ((maps[i][k])&&maps[k][j]);
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
memset(maps,0,sizeof(maps));
int u,v;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
maps[u][v] =1;
}
floyd();
int cnt = 0;
int ans = 0;
for(int i=1;i<=n;i++)
{
cnt = 0;
for(int j =1;j<=n;j++)
{
if(maps[i][j])
{
cnt++;
}
if(maps[j][i])
{
cnt++;
}
}
if(cnt == n-1)
{
ans++;
}
}
printf("%d\n",ans);
return 0;
}