Cow Contest
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8431 | Accepted: 4758 |
Sample Input
5 5 4 3 4 2 3 2 1 2 2 5
Sample Output
2
题目大意:给出n头奶牛,有给出m种奶牛的能力关系,然后依照能力排名,问有多少头奶牛的排名已经确定(能力值高的在前面);
思路:用Floyd算法,遍历每头牛,如果有这么一头牛,比他排名高的和比他排名第的总数为n-1,则这头牛排名已经确定;
已Accept代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int p[106][106];
int main(){
int n,m,i,j,k,a,b;
while(scanf("%d%d",&n,&m)!=EOF){
memset(p,0,sizeof(p));
for(i=0;i<m;i++){
scanf("%d%d",&a,&b);
p[a][b]=1;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
if(p[j][i]&&p[i][k])
p[j][k]=1; //牛j能力比牛k高,记为 1 ;
int total=0;
for(i=1;i<=n;i++){
int t=0;
for(j=1;j<=n;j++)
t+=p[i][j]+p[j][i]; //记录排名比牛i 高的 和 低的 总的个数
if(t==n-1)
total++;
}
printf("%d\n",total);
}
return 0;
}