Cow Contest(Poj 3660)
2017-01-15 12:31
281 查看
Description
N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating ina 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 MLines 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 determinedSample Input
5 5 4 3 4 2 3 2 1 2 2 5
Sample Output
2
Source
USACO 2008 January Silver传递闭包,利用floyd-warshall算法解决
//============================================================================ // Name : test.cpp // Author : Qihan // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> using namespace std; typedef long long int LLI; typedef pair<LLI,LLI> PII; #define Lowbit(x) (x & (-x)) const int inf = 1000000000; const int maxn = (2048 + 10); bool vis[maxn][maxn]; int main() { // freopen("/home/qihan/Documents/in","r",stdin); int n,m; memset(vis,false,sizeof(vis)); scanf("%d%d",&n,&m); for(int i = 1; i <= n; i ++) { vis[i][i] = true; } for(int i = 1; i <= m; i ++) { int x,y; scanf("%d%d",&x,&y); vis[x][y] = true; } for(int k = 1; k <= n; k ++) { for(int i = 1; i <= n; i ++) { for(int j = 1; j <= n; j ++) { if(vis[i][k] == true && vis[k][j] == true) vis[i][j] = true; } } } int ans = 0; for(int i = 1; i <= n; i ++) { bool flag = true; for(int j = 1; j <= n; j ++) { if(i == j) continue; else if(!vis[i][j] && !vis[j][i]) { flag = false; break; } } if(flag == true) ans ++; } printf("%d\n",ans); return 0; }
相关文章推荐
- 【POJ】3660 Cow Contest floyd(可以拓扑排序?)
- Cow Contest POJ - 3660(传递闭包,floyd)
- POJ-3660 Cow Contest Floyd传递闭包的应用
- POJ 3660—— Cow Contest——————【Floyd传递闭包】
- POJ 3660 && NYIST 211 Cow Contest && ZOJ 1060 Sorting It All Out【Floyd算法扩展应用】
- Cow Contest POJ - 3660
- POJ-3660(Cow Contest)——传递闭包
- poj 3660 Cow Contest floyd
- POJ - 3660 Cow Contest floyd
- poj 3660 Cow Contest Flyod
- Cow Contest POJ - 3660(Floyd,传递闭包)
- poj 3660 Cow Contest floyd 传递闭包!!基础
- POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包)
- Cow Contest POJ - 3660 (floyd求传递闭包)
- Cow Contest POJ - 3660
- poj 3660 Cow Contest Flyod
- Cow Contest POJ - 3660
- POJ 3660 Cow Contest floyd求传递闭包 || bfs
- D - Cow Contest POJ - 3660
- poj Cow Contest(传递闭包)