poj 3660 Cow Contest(Floyd的拓展应用)
2016-02-28 12:54
351 查看
Cow Contest
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 ≤ N; A ≠ 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
Sample Output
Source
USACO 2008 January Silver
题意;给出m对关系A-B,A能击败B,判断有几只牛能确定排名,
Floyd算法的拓展应用,叫做什么关系闭包,离散数学中的知识,第一次听说
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8968 | Accepted: 5033 |
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 ≤ N; A ≠ 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
Source
USACO 2008 January Silver
题意;给出m对关系A-B,A能击败B,判断有几只牛能确定排名,
Floyd算法的拓展应用,叫做什么关系闭包,离散数学中的知识,第一次听说
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int map[110][110],n,m,i,j,k; void floyd() { for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(map[i][k]+map[k][j]>1)//如果i能到达k,k能到达j,则i能 到达j map[i][j]=1; } } int main() { int a,b; while(scanf("%d%d",&n,&m)!=EOF) { memset(map,0,sizeof(map));//先把数组清零,表示相互之间不能到达 for(i=0;i<m;i++) { scanf("%d%d",&a,&b); map[a][b]=1;//a能到达b } floyd(); int ans=0; for(i=1;i<=n;i++) { int help=0; for(j=1;j<=n;j++) if(map[i][j]==1||map[j][i]==1)//判断该点到达的点和被到达的点,即该牛排名之前的牛数量和排名之后的数量 help++; if(help==n-1)//如果该牛排名之前的牛数量和排名之后的数量和为牛总数减去一,则该牛的排名可以确定 ans++; } printf("%d\n",ans); } }
相关文章推荐
- 教大家看官方技术文档(一)- Spring MVC
- Javascript的数据类型简述
- 进程与线程的联系与区别
- Linux正则表达式――扩展篇
- 双按钮双事件监听机制的简单java GUI
- 【前端】Sublime text3 插件LiveReload 实现实时预览
- 大型网站架构系列:电商网站架构案例(2)
- Android进行短信备份的一个工具类,支持进度条显示
- 【转】C++调用Matlab的.m文件
- 截取小数点前的数字,不要四舍五入
- JS之数组
- CSS 颜色代码大全
- 笔试真题解析 2016 SYDZ 校招在线笔试题
- PHP 数据库操作 mysqli
- version robot
- 两个日期的比较, 相差多少秒,多少小时,多少分钟,都是getTime()x先获取秒,在做处理--Math.ceil(long)返回一个大于这个数的最小整数
- leetcode之 Sum Root to Leaf Numbers
- hdu2045——不容易系列之(3)—— LELE的RPG难题
- JAVA笔记整理(1):进制转换
- UIWebView 需改userAgent 并且加载微信公共账号