poj3660——Cow Contest【最短路】

原创 2018年04月16日 23:29:07
Cow Contest
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 14262 Accepted: 7982

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两组数,n代表牛的数量,接下来的m行,每行两组数据,左边的牛的等级大于右边的牛的等级。问最后有几头牛可以确定等级。

这道题当时第一眼看到以为是并查集,后来发现不对,最后在算法竞赛入门经典上看到相关解法,这道题属于传递闭包问题,判断有多少条路是可以连通的,用floyd算法就可一些出来。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<vector>
using namespace std;
int map[105][105];
int main(){
	int n,m;
	while(~scanf("%d %d",&n,&m)){
		memset(map,0,sizeof(map));
		int i,j,k,a,b;
		for(i=1;i<=m;i++){
			scanf("%d %d",&a,&b);
			map[a][b]=1;//表示牛a和牛b之间可以联通 
		}
		//Floyd-Warshall算法的核心思想
		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]){
						map[i][j]=1;/*判断i号顶点和j号顶点之间是否
						可以联通 ,就需要判断i和j之间的k个顶点之间是否
						可以联通,如果其中有任意一个无法联通则i j之间就
						无法联通*/ 
					}
				}
			}
		}
		int sum;
		sum=0;
		for(i=1;i<=n;i++){
			int ans;
			ans=n-1;
			for(j=1;j<=n;j++){
				if(map[i][j]||map[j][i]){
					ans--;/*顶点i和顶点j之间有一个点可以联通 */ 
				}
			}
			if(!ans){
				sum++;
			}
		}
		printf("%d\n",sum); 
	}
	return 0;
}



POJ 3660Cow Contest(并查集+拓扑排序)

Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7567   Accepted: 4206...
  • u010372095
  • u010372095
  • 2015-04-22 22:16:54
  • 687

POJ3660 Cow Contest(floyd算法应用)

Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8767   Ac...
  • mengxiang000000
  • mengxiang000000
  • 2016-01-11 18:08:59
  • 489

POJ - 3660 - Cow Contest (floyd求传递闭包)

Cow Contest题目传送:Cow Contest思路:floyd求传递闭包,即用来判断每一个点是否可以到达另一个点,然后根据该点的可以到达的点的个数和可以被到达的次数之和等于n-1,来判断该点是...
  • u014355480
  • u014355480
  • 2015-08-04 22:10:31
  • 515

POJ 3660 Cow Contest(floyd传递关系闭包)

题 意:给牛的数量n和m对输赢关系,若n头牛之间都存在输赢关系(可传递,例如A赢B,B赢C,那么可以认为A赢C),则该牛名次确定。 思   路:用floyd传递关系 #include #inclu...
  • kalilili
  • kalilili
  • 2015-03-10 19:08:47
  • 572

POJ-3660-Cow Contest [最短路][Floyd]

题目传送门题意:给出许多牛之间的强弱关系,问可以确定多少牛的名次。思路:用Floyd,如果一头牛与其他N-1头牛的关系确定,即这头牛的名次就固定。#include #include #includ...
  • L524922464
  • L524922464
  • 2017-08-22 08:45:20
  • 123

POJ3660 Cow Contest【最短路-floyd】

N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we ...
  • wybooooooooo
  • wybooooooooo
  • 2018-03-19 20:45:54
  • 9

Poj3660 Cow Contest 【传递闭包】

Rank这种东西…根据定义来说就是个体在整体中的排名,那么一定需要知道这个个体和整体的关系才能知道Rank。 比如说,只有知道其他所有人的成绩,才能知道自己的排名是多少 那么问题转化为求有多少个能...
  • Fantasy_World
  • Fantasy_World
  • 2017-09-20 21:31:27
  • 87

[floyd]poj3660 Cow Contest

Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uDescription N (1 ≤ N ≤ ...
  • u012848631
  • u012848631
  • 2015-07-13 09:54:23
  • 299

Cow Contest poj3660

传送门:poj3660 题意挺简单的,就是有n头牛,给你一些他们之间的胜败关系,问你能不能确定某头牛的名次。 这题思路好巧妙啊只能说。。因为他们之间的胜败关系就像大于小于关系一样,可以传递,所以把...
  • lxy767087094
  • lxy767087094
  • 2016-12-05 22:14:58
  • 89

POJ3660 Cow Contest(floyd)

Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12558   A...
  • m0_37846371
  • m0_37846371
  • 2017-08-10 19:17:35
  • 69
收藏助手
不良信息举报
您举报文章:poj3660——Cow Contest【最短路】
举报原因:
原因补充:

(最多只允许输入30个字)