Cow Contest
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 9317   Accepted: 5249

Description

N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we all know, some cows code better than others. Each cow has a certain constant skill rating that is unique among the competitors.

The contest is conducted in several head-to-head rounds, each between two cows. If cow A has a greater skill level than cow B (1 ≤ A ≤ N; 1 ≤ B ≤ NA ≠ B), then cow A will always beat cow B.

Farmer John is trying to rank the cows by skill level. Given a list the results of M (1 ≤ M ≤ 4,500) two-cow rounds, determine the number of cows whose ranks can be precisely determined from the results. It is guaranteed that the results of the rounds will not be contradictory.

Input

* Line 1: Two space-separated integers: N and M
* Lines 2..M+1: Each line contains two space-separated integers that describe the competitors and results (the first integer, A, is the winner) of a single round of competition: A and B

Output

* Line 1: A single integer representing the number of cows whose ranks can be determined
 

Sample Input

5 5
4 3
4 2
3 2
1 2
2 5

Sample Output

2

题意:有n头牛比赛,m种比赛结果,最后问你一共有多少头牛的排名被确定了,其中如果a战胜b,b战胜c,则也可以说a战胜c,即可以传递胜负。求能确定排名的牛的数目。

解题思路:如果一头牛被x头牛打败,打败y头牛,且x+y=n-1,则我们容易知道这头牛的排名就被确定了,所以我们只要将任何两头牛的胜负关系确定了,在遍历所有牛判断一下是否满足x+y=n-1,将满足这个条件的牛数目加起来就是所求解。

可以利用传递闭包,将某头牛到其它牛的"可达性"求出。

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

poj 3660(Floyd求传递闭包)相关推荐

  1. UVA - 247 Calling Circles(Floyd求传递闭包)

    题目: 思路: 利用Floyd求传递闭包(mp[i][j] = mp[i][j]||(mp[i][k]&&mp[k][j]);),当mp[i][j]=1&&mp[j][ ...

  2. poj 3660 Cow Contest 传递闭包

    题目链接: http://poj.org/problem?id=3660 题目大意: 有n头牛,每头牛都有一个战斗值,农夫约翰想给这些牛排名次,但是只有m场比赛,约翰想知道有多少头牛的名次是确定的. ...

  3. Floyd求传递闭包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1704 题意:给出一些排名,求最少需要询问多少次才能确定总体排名.本题属于求传递闭包问题,用Floyd算法即 ...

  4. The Geodetic Set Problem - POJ 1612 Floyd求最短路径所有点集

    题目链接 POJ 1612 Description Let G = (V,E) be a connected graph without loops and multiple edges, where ...

  5. POJ 3660 Cow Contest 传递闭包+Floyd

    原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  6. POJ 3615 floyd 求任意起点终点的最短路

    http://poj.org/problem?id=3615 题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了. View Code // I'm lanj ...

  7. poj 3660 CwoContest Floyed传递闭包

    https://www.luogu.org/problem/P2419 题意: 有N头牛,每个牛有一个唯一且不同的能力等级值.然后他们中的两头牛进行M场比赛,并给你这M场的比赛结果.现在的问题是问你有 ...

  8. Poj(2240),Floyd求汇率是不是赚钱

    题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...

  9. POJ2594(二分匹配+Floyd求传递闭包)

    题目:Treasure Exploration 很明显是最小路径覆盖,只是必须先要求传递闭包就行了. #include <stdio.h> #include <string.h> ...

最新文章

  1. 软件项目技术方案_榆林化学公司项目工艺包关键技术创新方案审查顺利完成
  2. matlab graphminspantree
  3. RouterOS限速更高级运用
  4. 千万微信红包封面领取攻略,抢到你吐
  5. [七]RabbitMQ-客户端源码之AMQPImpl+Method
  6. Magento事件与事件监听
  7. 去掉Mybatis Generator生成的一堆 example
  8. EXCEL数组公式,群里求助的问题,按条件查最大值,中位数等, 可用数组公式解决
  9. 物联网服务器搭建记录,心得
  10. uc看视频显示服务器有点忙,UC3软件常见问题处理方案
  11. 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
  12. [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
  13. 第一篇 使用numpy创建数组(一维、多维)
  14. mysql ext3 ext4_Mysql如何选择文件系统?(ext4 vs ext3 vs jfs vs xfs vs reise
  15. c语言编码 企业发放德奖金,C语言 · 企业奖金发放
  16. java l1是啥意思_L1-020 帅到没朋友 (20分) Java
  17. 2022上半年信息系统项目管理师论文真题
  18. 百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博 微信 空间 分享 添加喜爱 //d1.sina.com.cn/201706/26/14587
  19. vimeo 镜像_Vimeo API – OAuth和上传示例
  20. 自学 R 语言的十条干货技巧分享

热门文章

  1. 为什么 90% 的人更愿意相信“虚假”信息?(附鉴真指南)
  2. 桑文锋的数据“长征”
  3. 20051020:该办宽带了
  4. ASP NET 数据库访问
  5. [转载] Linux信号基础
  6. 深入浅出Netty之四 Client请求处理
  7. 如果我要...(研究版)
  8. success for advertisement
  9. video camera in shanghai
  10. ARMV7,ARMV8