【代码超详解】HDU 1704 Rank(Floyd-Warshall 算法求传递闭包 · 模板)

博客深入解析HDU 1704 Rank问题,通过Floyd-Warshall算法求解传递闭包。分析如何构建关系矩阵,并找出无法确定输赢关系的询问数量,强调在遍历矩阵时要考虑对角线对称项。附带AC代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、传送门

http://acm.hdu.edu.cn/showproblem.php?pid=1704

二、算法分析说明与代码编写指导

在这里插入图片描述
在这里插入图片描述在这里插入图片描述对本题而言,将全部输入存储为关系矩阵。于是,如果 A 和 B 之间未直接比赛,但如果能根据一系列已有的比赛结果,确定 A → C1 → C2 → …… → Ck → B,k∈Z,那么 A 和 B 的输赢关系也可以确定。补完传递闭包后,关系矩阵中剩下的为 0 的部分就是不能确定输赢关系的部分。
要求给不出解答的询问数量最多,那么每次询问都要正好问到没能确定输赢关系的那些部分。对除了主对角线(自己不跟自己比)以外的上三角或下三角部分遍历一次,把 0 的项数数出来就可以了。不过有一点要注意,只对对角线以外的上三角或下三角部分扫描时,如果遇到了为 0 的项,还要考察其关于主对角线对称的那一项是否也为 0。若是,才能计入答案中,因为不能确定 A 赢 B 不代表一定不能确定 B 是否赢了 A,也许 B 确实赢了 A。

三、AC 代码

#include<cstdio>
#include<algorithm>
#include<bitset>
#pragma warning(disable:4996)
using namespace std;
const unsigned nmax = 501
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值