POJ 3660 Cow Contest. (传递闭包)【Floyd】
<题目链接>
题目大意:
有n头牛, 给你m对关系(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少牛的排名。
解题分析:
首先,做这道题要明确,什么叫确定牛的排名。假设该牛被x头牛打败(直接或间接),同时它也有y头手下败将(直接或间接),当x+y=n-1时,即除这头牛本身外,其他所有的牛都为这头牛贡献了出度或者入度。即,当这头牛与其它所有的牛的输赢关系都确定时(直接或间接),这头牛的排名也就可以确定了。而题目只给出了一些牛的直接输赢关系,这时,我们就可以利用Floyed算法,得到牛群之间的间接输赢关系。
比如:a-->b ,b-->c ,则 a-->c,这种传递关系的思想,在Floyed 的三重循环中可以很轻易的体现,如果不明白就自己画图感受一下。
#include <cstdio>
#include <cstring> int main(){
int n,m;
while(scanf("%d %d",&n,&m)!=EOF){
int line[][]; //line[i][j] 表示 i 赢 j
memset(line,,sizeof(line));
for(int i=;i<=m;i++){
int a,b;
scanf("%d %d",&a,&b);
line[a][b]=; //输入的是能够直接确定输赢关系的点
} /* Floyed -传递闭包 */ //即,如果a-->b,b-->c的话,那么a-->c
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
for(int k=;k<=n;k++){
if(line[j][i]&&line[i][k]){
line[j][k]=;
}
}
}
}
//用Floyed算法将那些间接的输赢关系也全部计算出来 int ans=;
for(int i=;i<=n;i++){
bool flag=true;
for(int j=;j<=n;j++){
if(i==j)continue;
if(!line[i][j]&&!line[j][i])flag=false; //如果除它自己以外,还存在不能够和它确定输赢的点(直接或间接),那么这个点的位置不能够确定
}
if(flag){
ans++;
}
}
printf("%d\n",ans);
}
return ;
}
2018-08-27
POJ 3660 Cow Contest. (传递闭包)【Floyd】的更多相关文章
- POJ 3660 Cow Contest 传递闭包+Floyd
		
原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
 - POJ 3660—— Cow Contest——————【Floyd传递闭包】
		
Cow Contest Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
 - POJ 3660 Cow Contest(Floyd求传递闭包(可达矩阵))
		
Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16341 Accepted: 9146 Desc ...
 - POJ - 3660  Cow Contest 传递闭包floyed算法
		
Cow Contest POJ - 3660 :http://poj.org/problem?id=3660 参考:https://www.cnblogs.com/kuangbin/p/31408 ...
 - POJ 3660 Cow Contest (floyd求联通关系)
		
Cow Contest 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/H Description N (1 ≤ N ≤ 100) ...
 - POJ 3660 Cow Contest【Floyd 传递闭包】
		
传送门:http://poj.org/problem?id=3660 题意:有n头牛, 给你m对关系.(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少头牛的排名. 传递闭包: 关系 ...
 - poj 3660 Cow Contest (bitset+floyd传递闭包)
		
传送门 解题思路 考试题,想到传递闭包了,写了个O(n^3)的,T了7个点...后来看题解是tm的bitset优化???以前好像没听过诶(我太菜了),其实也不难,时间复杂度O(n^3/32) #inc ...
 - POJ 3660 Cow Contest(传递闭包)
		
N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we ...
 - POJ 3660 Cow Contest【floyd】
		
题目链接: http://poj.org/problem?id=3660 题目大意: 给出n头牛,m个关系,关系为a的战力比b高.求最后可以确定排名的牛的数量 思路: 1.如果一头牛跟其他所有牛都确定 ...
 
随机推荐
- mysql 显示表字段及mysql系统信息
			
参考链接: http://www.cnblogs.com/zhwl/archive/2012/08/28/2660532.html SHOW DATABASES ...
 - linux matlab2016 安装
			
1. 下载Matlab 2016b 下载文件夹中包含三个文件:Matlab 2016b Linux64 Crack.rar,R2016b_glnxa64_dvd1.iso,R2016b_glnxa64 ...
 - 不断更新的 ToDo-List
			
有些事情要明着写出来才会去干. 这里是一个不断更新的 ToDo-List,大致按照重要度和列出时间排序,已经完成的会画上删除线. 主要着眼短期计划,其中的大部分事务应该在一周内解决,争取不做一只鸽子. ...
 - 【转】Python流程控制语句
			
[转]Python流程控制语句 人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走:有的人好一点,可以二选一:有些能力好或者家境好的人,可以有更多的选择:还有一些人在人生的迷茫期会在 ...
 - python计算最大公约数和最小公倍数
			
a=4 b=2 def gcd(a,b): return a if b==0 else gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) print(gcd( ...
 - shell无法捕获程序输出的问题
			
dir_name=`echo ~gtp` 获取的用户目录为/ dir_name=`echo ~gtp 2>&1` 这样就可以获取到了 参考网址:https://blog.csdn.net ...
 - openstack swift节点安装手册2-创建rings
			
以下步骤需要在controller节点上进行操作: 切换到/etc/swift目录下进行如下操作: 一.创建account ring 1.创建account.builder文件 swift-ring- ...
 - Oracle数据库操作基本语法
			
创建表 SQL>create table classes( classId number(2), cname varchar2(40), birthda ...
 - Python-HTML 最强标签分类
			
编程: 使用(展示)数据 存储数据 处理数据 前端 1. 前端是做什么的? 2. 我们为什么要学前端? 3. 前端都有哪些内容? 1. HTML 2. CSS 3. JavaScript 4.jQue ...
 - js常用函数整理
			
类型转换:parseInt\parseFloat\toString 类型判断:typeof;eg:if(typeof(var)!="undefined")\isNaN 字符处理函数 ...