题目链接:https://cn.vjudge.net/problem/POJ-3660

题意

有n头牛,每头牛都有一定的能力值,能力值高的牛一定可以打败能力值低的牛

现给出几头牛的能力值相对高低

问在一场一对一的比赛中,那些牛的排名可以确定下来

思路

一开始还以为是topo排序,每次去掉没有入度或出度的节点

若有两个及以上的节点可以去掉,则排序结束

然后写出来WA两发...

正确思路:

若满足x头牛可以打败牛a,牛a可以打败y头牛,且nx+y-1时牛a排名唯一确定

那么可以利用Floyd传递闭包来生成一个数组G[a][b],表示a可以打败b

当$ \sum G[i][a]+G[a][i]n-1$时,可以确定牛a排名

代码

#include <cstring>
#include <cstdio>
const int maxn=100;
bool G[maxn+5][maxn+5]={false}; void Floyd(int n){
for (int k=1; k<=n; k++)
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
G[i][j]=G[i][j] || (G[i][k] && G[k][j]);
} int main(void){
int n, m, a, b; memset(G, false, sizeof(G));
scanf("%d%d", &n, &m);
for (int i=0; i<m; i++){
scanf("%d%d", &a, &b);
G[a][b]=true;
}Floyd(n); int ans=0;
for (int i=1; i<=n; i++){
int cnt=0;
for (int j=0; j<=n; j++) if (i!=j && (G[i][j] || G[j][i]))
cnt++;
if (cnt==n-1) ans++;
}printf("%d\n", ans); return 0;
}
Time Memory Length Lang Submitted
32ms 364kB 685 G++ 2018-05-25 15:05:57

POJ-3660 Cow Contest Floyd传递闭包的应用的更多相关文章

  1. poj 3660 Cow Contest(传递闭包 Floyd)

    链接:poj 3660 题意:给定n头牛,以及某些牛之间的强弱关系.按强弱排序.求能确定名次的牛的数量 思路:对于某头牛,若比它强和比它弱的牛的数量为 n-1,则他的名次能够确定 #include&l ...

  2. POJ 3660 Cow Contest(传递闭包floyed算法)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5989   Accepted: 3234 Descr ...

  3. ACM: POJ 3660 Cow Contest - Floyd算法

    链接 Cow Contest Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Descri ...

  4. POJ 3660 Cow Contest【传递闭包】

    解题思路:给出n头牛,和这n头牛之间的m场比赛结果,问最后能知道多少头牛的排名. 首先考虑排名怎么想,如果知道一头牛打败了a头牛,以及b头牛打赢了这头牛,那么当且仅当a+b+1=n时可以知道排名,即为 ...

  5. poj 3660 Cow Contest (传递闭包)

    /* floyd 传递闭包 开始Floyd 之后统计每个点能到的或能到这个点的 也就是他能和几个人确定胜负关系 第一批要有n-1个 然后每次减掉上一批的人数 麻烦的很 复杂度上天了.... 正难则反 ...

  6. POJ 3660 Cow Contest (Floyd)

    题目链接:http://poj.org/problem?id=3660 题意是给你n头牛,给你m条关系,每条关系是a牛比b牛厉害,问可以确定多少头牛的排名. 要是a比b厉害,a到b上就建一条有向边.. ...

  7. POJ - 3660 Cow Contest(传递闭包)

    题意: n个点,m条边. 若A 到 B的边存在,则证明 A 的排名一定在 B 前. 最后求所有点中,排名可以确定的点的个数. n <= 100, m <= 4500 刚开始还在想是不是拓扑 ...

  8. POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包)

    POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包) Description N (1 ≤ N ...

  9. POJ 3660 Cow Contest 传递闭包+Floyd

    原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  10. POJ3660 Cow Contest —— Floyd 传递闭包

    题目链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

随机推荐

  1. div基本组成要素

    title下面先清除固有格式 style{ *{ margin:0 auto padding:0 foant family } } div{ width height border backgroun ...

  2. Iterator与Asyc/Await的实现

    https://wanago.io/2018/04/23/demystifying-generators-implementing-async-await/

  3. Is jQuery Still Relevant in 2018?

    DOM Selection $('.someclass') document.querySelector('.someclass') document.querySlectorAll('.somecl ...

  4. oracle11.2静默安装

    操作系统及Oracle版本 Linux版本:rhel-server-5.8-x86_64-dvd Oracle版本:Oracle Database 11g Release 2 (11.2.0.4.0) ...

  5. keepalived 和 heartbeat对比

    Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP): Heartbeat是基于主机或网络的服务的高可用 ...

  6. 中山纪念中学培训杂题(难的都不在这里面qwq)

    来中山纪中半个月了,差不多就要结束了, 写一些之前考试能更正的题解吧,还有一些不是给人做的(比如IOI2018互测.. 备注:我不会的就没有放上来了,所有数学有关的基本上都死了. 所以这里的题目都是相 ...

  7. 【HDU 6299】Balanced Sequence

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 我们贪心地把每一个括号序列能匹配都按照栈的规则都匹配出来. (直接递增匹配对数*2就可以了 最后栈里面就只剩下类似))))((((( ...

  8. Qt之命令行参数

    简述 在Qt之进程间通信(QProcess)一节,我们讲解了如何通过QProcess来进行进程间的通信.主要通过启动外部程序,然后通过命令行的方式传递参数. 这里,我们可以通过Qt Creator来设 ...

  9. UVA 436 - Arbitrage (II)(floyd)

    UVA 436 - Arbitrage (II) 题目链接 题意:给定一些国家货币的汇率.问是否能通过不断换货币使钱得到增长 思路:floyd,完事后推断一下有没有连到自己能大于1的情况 代码: #i ...

  10. Cocos2d-x使用Luajit将Lua脚本编译为bytecode,实现加密 更新

    项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行. 以下是使用原生的lua解释器编译字节码: 1 ...