【POJ】3660 Cow Contest floyd(可以拓扑排序?)
2014-07-14 11:22
295 查看
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
传送门:【POJ】3660 Cow Contest floyd
题目分析:floyd求传递闭包,然后对每个点数比他大的个数和比他小的个数,如果和等于n-1,说明该点的名次可以确定。
Orz风神,我做的是floyd。。。可是这题在拓扑排序题集里面。。。不愧是刷光图论的神。。根本想不到拓扑的做法。T U T
代码如下:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6925 | Accepted: 3792 |
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
传送门:【POJ】3660 Cow Contest floyd
题目分析:floyd求传递闭包,然后对每个点数比他大的个数和比他小的个数,如果和等于n-1,说明该点的名次可以确定。
Orz风神,我做的是floyd。。。可是这题在拓扑排序题集里面。。。不愧是刷光图论的神。。根本想不到拓扑的做法。T U T
代码如下:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std ; #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REPV( i , a , b ) for ( int i = a ; i >= b ; -- i ) #define clear( a , x ) memset ( a , x , sizeof a ) typedef long long Int ; const int MAXN = 105 ; const int INF = 0x3f3f3f3f ; int G[MAXN][MAXN] ; int win[MAXN] , lose[MAXN] ; int n , m ; void work () { int u , v ; while ( ~scanf ( "%d%d" , &n , &m ) ) { clear ( G , 0 ) ; clear ( win , 0 ) ; clear ( lose , 0 ) ; REP ( i , m ) { scanf ( "%d%d" , &u , &v ) ; G[u][v] = 1 ; } REPF ( k , 1 , n ) REPF ( i , 1 , n ) REPF ( j , 1 , n ) G[i][j] |= G[i][k] & G[k][j] ; REPF ( i , 1 , n ) REPF ( j , 1 , n ) if ( G[i][j] ) ++ win[i] , ++ lose[j] ; int cnt = 0 ; REPF ( i , 1 , n ) if ( win[i] + lose[i] + 1 == n ) ++ cnt ; printf ( "%d\n" , cnt ) ; } } int main () { work () ; return 0 ; }
相关文章推荐
- POJ - 3660 Cow Contest floyd
- Cow Contest POJ - 3660(Floyd,传递闭包)
- POJ-3660 Cow Contest Floyd传递闭包的应用
- Cow Contest POJ - 3660 (floyd求传递闭包)
- POJ 3660 Cow Contest floyd求传递闭包 || bfs
- poj 3660 Cow Contest floyd 传递闭包!!基础
- poj 3660 Cow Contest floyd
- Cow Contest POJ - 3660(传递闭包,floyd)
- POJ-3660(Cow Contest)——传递闭包
- Cow Contest(Poj 3660)
- POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包)
- POJ 3660—— Cow Contest——————【Floyd传递闭包】
- Cow Contest POJ - 3660
- Cow Contest POJ - 3660
- POJ 3660 Cow contests Floyd 传递闭包
- poj 3660 Cow Contest Flyod
- Cow Contest POJ - 3660
- POJ 3660 && NYIST 211 Cow Contest && ZOJ 1060 Sorting It All Out【Floyd算法扩展应用】
- D - Cow Contest POJ - 3660
- poj 3660 Cow Contest Flyod