POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 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

5 5

4 3

4 2

3 2

1 2

2 5

Sample Output

2

Http

POJ:https://vjudge.net/problem/POJ-3660

HUST:https://vjudge.net/problem/HUST-1037

HRBUST:https://vjudge.net/problem/HRBUST-1018

Source

图论,传递闭包

题目大意

给出n只奶牛的m次决斗结果,要求现在能确定多少只奶牛的排名

解决思路

自己一开始yy了好久割点啥的

先看一下题目中要求的,如果一只牛与其他牛确定了的关系n-1,则说明这只牛的排名是确定的,即该牛打赢的牛的数量+该牛打输的牛的数量n-1时此牛的排名是确定的。

但是根据题目中给出的m对决斗结果不能推出所有的情况,这时我们就要利用传递性,牛A打赢了牛B,牛B打赢了牛C,那么牛A也就可以打赢牛C,这个我们可以用类似Floyed算法来解(似乎这个算法有个具体的名称,但博主这里忘记了)。

注意:HRBUST有多组数据

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std; const int maxN=101;
const int inf=2147483647; int n,m;
int M[maxN][maxN]; int main()
{
while (cin>>n>>m)
{
memset(M,0,sizeof(M));
for (int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
M[u][v]=1;
}
for (int k=1;k<=n;k++)//传递闭包
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
M[i][j]=M[i][j] || ((M[i][k])&&(M[k][j]));
int Ans=0;
for (int i=1;i<=n;i++)
{
int cnt=0;
for (int j=1;j<=n;j++)
if ((i!=j)&&((M[i][j])||(M[j][i])))//M[i][j]就是i打赢j,M[j][i]表示i被j打败,因为不管被打败还是打赢,都是确定了i与j的关系,所以都要统计
cnt++;
if (cnt==n-1)
Ans++;
}
cout<<Ans<<endl;
}
return 0;
}

POJ 3660 Cow Contest / HUST 1037 Cow Contest / HRBUST 1018 Cow Contest(图论,传递闭包)的更多相关文章

  1. POJ 3660 Cow Contest

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

  2. (poj 3660) Cow Contest (floyd算法+传递闭包)

    题目链接:http://poj.org/problem?id=3660 Description N ( ≤ N ≤ ) cows, conveniently numbered ..N, are par ...

  3. POJ 3660—— Cow Contest——————【Floyd传递闭包】

    Cow Contest Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

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

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

  5. POJ - 3660 Cow Contest 传递闭包floyed算法

    Cow Contest POJ - 3660 :http://poj.org/problem?id=3660   参考:https://www.cnblogs.com/kuangbin/p/31408 ...

  6. POJ 3660 Cow Contest (floyd求联通关系)

    Cow Contest 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/H Description N (1 ≤ N ≤ 100) ...

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

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

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

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

  9. POJ 3660 Cow Contest (闭包传递)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7690   Accepted: 4288 Descr ...

随机推荐

  1. 20155311《网络对抗》MSF基础应用

    20155311<网络对抗>MSF基础应用 实验过程 实验系统 靶机1:Windows XP Professional SP2 ,IP地址:192.168.136.129 靶机2:Wind ...

  2. Kafka查看topic、consumer group状态命令

    最近工作中遇到需要使用kafka的场景,测试消费程序启动后,要莫名的过几十秒乃至几分钟才能成功获取到到topic的partition和offset,而后开始消费数据,于是学习了一下查看kafka br ...

  3. 【php增删改查实例】第七节 - 部门管理模块(画一个datagrid表格)

    在easyui中,datagrid组件需要用一个table标签去渲染. <table id="grid0" title="部门管理" class=&quo ...

  4. 使用pandas,7行代码实现朴素贝叶斯

    作者:hhh5460 大抵分成两类 一.离散的.标签化的数据 原文没有使用pandas,我使用pandas重新实现了朴素贝叶斯算法,看起来非常简洁.清爽. import pandas as pd '' ...

  5. 对NP问题的一点感想

    一.概述 回忆欧拉回路问题,要求找出一条经过图的每条边恰好一次的路径,这个问题是线性可解的.哈密尔顿圈问题是找一个简单圈,该圈包括图的每一个顶点.对于这个问题,现在还没有发现线性算法. 对于有向图的单 ...

  6. Assetbundle管理与加载

    最近在做项目优化的时候发现公司的项目用的还是老式的WWW去加载assetbundle资源的形式,而且是通过在两个Update里面分开加载AB和Asset的,这样虽然避免了协程的的使用,但是把一件事分开 ...

  7. Siki_Unity_2-9_C#高级教程(未完)

    Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...

  8. Python提示信息表示内容

      =此页面列出了PyLint 1.1.0支持的所有消息,按消息文本排序.还有一个按消息代码排序的所有代码列表. E0001,F0001,W0511(消息不同) E0103:循环中%r不正确W1501 ...

  9. Fabric Dev开发调试模式的搭建过程

    在利用Fabric开发Chaincode的时候,调试Chaincode显得尤为不方便,因为Chaincode正常应该运行在Docker容器中,每次修改Chaincode后想要使其更改生效必须得对Cha ...

  10. 日本厚劳省对IT技术人员展开确保海外人才调查

    新浪美股讯 5月13日消息,共同社报道,日本厚生劳动省将开始对在国内工作的外国籍系统工程师(SE)及程序员的劳动条件进行实际状况调查.为避免在与海外的人才获取竞争中败北,希望掌握接纳企业的需求等推动企 ...