Floyd--P2419 [USACO08JAN]牛大赛Cow Contest
FJ的$N(1 <= N <= 100)$头奶牛们最近参加了场程序设计竞赛:)。在赛场上,奶牛们按1..N依次编号。每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就是说,奶牛们的编程能力有明确的排名。 整个比赛被分成了若干轮,每一轮是两头指定编号的奶牛的对决。如果编号为A的奶牛的编程能力强于编号为B的奶牛$(1 <= A <= N; 1 <= B <= N; A != B)$ ,那么她们的对决中,编号为A的奶牛总是能胜出。 FJ想知道奶牛们编程能力的具体排名,于是他找来了奶牛们所有 $M(1 <= M <= 4,500)$轮比赛的结果,希望你能根据这些信息,推断出尽可能多的奶牛的编程能力排名。比赛结果保证不会自相矛盾。
看到$n<=100$按$floyd$的$n^3$做法还是可以的,毕竟$floyd$代码简略且少。
首先思考这道题,怎样才能确定一头牛的名次,显然是他与其他所有牛的输赢关系都确定。因为只有输赢两种情况,所以我们只要记录赢得情况就可以。输入$a$和$b$,$s[a][b]=1$表示$a$赢了$b$。这样预处理之后,就开始跑$floyd$。$floyd$代码如下(下面有解释):
void Floyd()
{
for (int t = ;t <= n;t++)
{
for (int i = ;i <= n;i++)
{
for (int j = ;j <= n;j++)
{
if (s[i][t]&&s[t][j])
s[i][j]=;
}
}
}
}
这里的t可以看做一个中转节点,如果i赢了t,且t赢了j,那么i就赢了j,这种简单逻辑还是可以推导出来的。然后我们就可以开始统计答案了。考虑一个问题,怎样知道两头牛之间的关系是否确定,s[i][j]=1表示i赢了j,两头牛的关系是确定的,s[j][i]=1表示j赢了i,两头牛的关系也是确定的,但是如果s[i][j]=0&&s[j][i]=0并不是说i输给了j,j输给了i,这显然是不成立的,而是根本没有确定。由于之前说过的,确定一头牛的名次根据是,他和所有牛的输赢关系都确定,所以只要有一个不确定我们就直接跳到下一个牛开始判断。这部分代码:
for(int i = ;i <= n;i++)
{
int f=;
for (int j = ;j <= n;j++)
{
if (i==j)continue;
if (s[i][j]==&&s[j][i]==)
{
f=;
break;
}
}
if (f==)
ans++;
}
整个代码:
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <cstring>
using namespace std;
int n,m,a,b;
int s[][];
int read()
{
int x=,a=;
char ch=getchar();
while (ch < ''||ch > '')
{
if (ch == '-') x=-;
ch = getchar();
}
while (ch <= ''&&ch >= '')
{
a=a* + ch - '';
ch=getchar();
}
return x*a;
}
void Floyd()
{
for (int t = ;t <= n;t++)
{
for (int i = ;i <= n;i++)
{
for (int j = ;j <= n;j++)
{
if (s[i][t]&&s[t][j])
s[i][j]=;
}
}
}
}
int main()
{
int ans=;
n=read();
m=read();
for (int i = ;i <= m;i++)
{
a=read();
b=read();
s[a][b]=;
}
Floyd();
for(int i = ;i <= n;i++)
{
int f=;
for (int j = ;j <= n;j++)
{
if (i==j)continue;
if (s[i][j]==&&s[j][i]==)
{
f=;
break;
}
}
if (f==)
ans++;
}
cout<<ans;
return ;
}
Floyd--P2419 [USACO08JAN]牛大赛Cow Contest的更多相关文章
- bzoj1612 / P2419 [USACO08JAN]牛大赛Cow Contest(Floyd)
P2419 [USACO08JAN]牛大赛Cow Contest Floyd不仅可以算最短路,还可以处理点之间的关系. 跑一遍Floyd,处理出每个点之间是否有直接或间接的关系. 如果某个点和其他$n ...
- P2419 [USACO08JAN]牛大赛Cow Contest
P2419 [USACO08JAN]牛大赛Cow Contest 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently number ...
- floyd的魔改应用——洛谷P2419 [USACO08JAN]牛大赛Cow Contest 题解
想找原题请点击这里:传送门 原题: 题目背景 [Usaco2008 Jan] 题目描述 N ( ≤ N ≤ ) cows, conveniently numbered ..N, are partici ...
- 洛谷 P2419 [USACO08JAN]牛大赛Cow Contest
题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...
- 洛谷—— P2419 [USACO08JAN]牛大赛Cow Contest
https://www.luogu.org/problem/show?pid=2419 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, convenie ...
- Luogu P2419 [USACO08JAN]牛大赛Cow Contest
题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a p ...
- P2419 [USACO08JAN]牛大赛Cow Contest(dfs走天下/)
题目描述 FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就 ...
- 洛谷P2419 [USACO08JAN]牛大赛Cow Contest
对于一个能够确定名次的点,可以注意到,对于该点,入度和出度的数量加起来等于N-1(这样还是不够准确的确切的说是,能够到达这个点的数量和这个点能够到达的数量的和 floyd不仅可以求两个点之间的最短路径 ...
- luogu题解 P2419 【牛大赛Cow Contest】传递丢包
题目链接: https://www.luogu.org/problemnew/show/P2419 分析: "在交际网络中,给定若干元素和若干对二元关系,且关系具有传递性. 通过传递性推导出 ...
随机推荐
- linux查漏补缺-linux命令行安装mysql
apt安装 sudo apt-get update sudo apt-get install mysql-server root@192:/sys/fs/cgroup# apt-get install ...
- delphi IdSMTP发送邮件
TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件.它实现了RFC 1939协议. 在使用TIdPOP3组件时需设置它的几个成员属性. Host :指定邮件服务器 ...
- 关于HTTP 协议
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个小按钮
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Spark教程——(6)Spark-shell基于Phoenix访问HBase数据
package statistics import common.util.timeUtil import org.apache.spark.{SparkConf, SparkContext} imp ...
- 二、spring集成ibatis进行数据源事务管理拦截器环境配置
1.dataSource-applicationContext.xml文件配置理解:(spring1.2.8+ibatis1.5.3)1.1)配置数据源 DriverManagerDataSource ...
- Lesson 48 Planning a share portfolio
How does the older investor differ in his approach to investment from the younger investor? There is ...
- Jmeter插件解释
Jmeter插件解释 1.jp@gc - Actiive Threads Over Time:不同时间活动用户数量展示(图表) 2.jp@gc - AutoStop Listener :自动停止监听 ...
- NPM概述及使用简介
什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP. npm是Node官方提供的包管理工具,他已经成了Node包的标准发布平台,用于Node ...
- swagger获取
参考 https://www.jianshu.com/p/840320d431a1 https://www.cnblogs.com/luoluocaihong/p/7106276.html