POJ 3660 - Cow Contest(传递闭包+Floyd)
2016-12-01 13:16
381 查看
Cow Contest
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 10479 Accepted: 5853
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
5 5
4 3
4 2
3 2
1 2
2 5
Sample Output
2
题意:
给出n的牛和m对关系(A牛可以战胜B牛),问最后有多少个牛的rank可以确定。
解题思路:
传递闭包+floyd,如果当前的牛和n-1头牛的关系都存在,那么这头牛的rank就知道了。
并且如果a和b有关系,b和c有关系,那么a和c也有关系。
AC代码:
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 10479 Accepted: 5853
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
5 5
4 3
4 2
3 2
1 2
2 5
Sample Output
2
题意:
给出n的牛和m对关系(A牛可以战胜B牛),问最后有多少个牛的rank可以确定。
解题思路:
传递闭包+floyd,如果当前的牛和n-1头牛的关系都存在,那么这头牛的rank就知道了。
并且如果a和b有关系,b和c有关系,那么a和c也有关系。
AC代码:
#include<stdio.h> #include<string.h> const int maxn = 1e2+5; bool mp[maxn][maxn]; int main() { int n,m; scanf("%d%d",&n,&m); memset(mp,0,sizeof(mp)); while(m--) { int a,b; scanf("%d%d",&a,&b); mp[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(mp[i][k] && mp[k][j]) mp[i][j] = 1; int ans = 0; int j; for(int i = 1;i <= n;i++) { for(j = 1;j <= n;j++) { if(i == j) continue; if(!mp[i][j] && !mp[j][i]) break; } if(j > n) ans++; } printf("%d",ans); return 0; }
相关文章推荐
- POJ 3660 Cow Contest 传递闭包+Floyd
- poj 3660 Cow Contest ----floyd 传递闭包
- Floyd传递闭包-POJ-3660-Cow Contest
- POJ 3660 Cow Contest (闭包传递)
- POJ 3660 Cow Contest-floyd传递闭包
- (POJ 3660)Cow Contest [详解] [floyd] 传递闭包 确定top序列顺序
- POJ 3660 Cow Contest 传递闭包
- POJ-3660 Cow Contest 传递闭包
- POJ 3660 Cow Contest——flody求传递闭包
- POJ - 3660----Cow Contest (Floyd)
- POJ3660 Cow Contest(floyd)
- POJ 3660 Cow Contest.(Floyd,传递闭包).
- POJ - 3660 - Cow Contest (floyd求传递闭包)
- 【Floyd 判断关系】POJ - 3660 Cow Contest
- POJ 3660 Cow Contest
- POJ 3660 Cow Contest [Floyd]
- poj 3660 Cow Contest(传递闭包 Floyd)
- POJ-3660-Cow Contest
- POJ 3660 Cow Contest (Floyd)
- POJ 3660 Cow Contest(传递闭包floyed算法)