POJ-3660-Cow Contest

来源:互联网 发布:matlab 给数组赋值 编辑:程序博客网 时间:2024/06/05 21:53

题目大意是说:给出牛之间的强弱关系,让你确定有多少头牛能够确定其排名。

用Floyd做,对每给的一个胜负关系连一条边,最后跑一次Floyd,然后判断一头牛所确定的关系是否是n-1次,若是,则这头牛的排名可以确定

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=102;int map[maxn][maxn],n,m;int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {memset(map,0,sizeof(map));for(int i=0;i<m;i++){    int a,b;    scanf("%d%d",&a,&b);    map[a][b]=1;}for(int k=1;k<=n;k++)    for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)    if(map[i][k]&&map[k][j])map[i][j]=1;int ans=0;for(int i=1;i<=n;i++){    int res=n-1;    for(int j=1;j<=n;j++)if(map[i][j]||map[j][i])    res--;    if(!res)ans++;}printf("%d\n",ans);    }    return 0;}


原创粉丝点击