拓扑排序
Ac-try
这个作者很懒,什么都没留下…
展开
-
HDU 1285 -- 确定比赛名次 (拓扑排序)
题目大意:有N个队伍比赛,给出M行输赢关系,要求输出一个排名,符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。 思路分析:利用小顶堆,直接进行拓扑排序就行。 代码实现: 邻接表: #include #include #include #include using namespace std; int top,cn原创 2015-01-14 15:09:25 · 412 阅读 · 0 评论 -
HDU 3342 -- Legal or Not(拓扑排序)
题目大意: 给出一些人的名次关系,问存不存在冲突的情况。 思路分析: 判断图是否有回环,直接拓扑就行,模板题。 代码实现: #include #include #include using namespace std; int top,degree[110]; queueq; struct Edge{ int v; Edge *next; }*head[110],e[1000原创 2015-01-14 15:26:06 · 370 阅读 · 0 评论 -
HDU 2094 -- 产生冠军 (邻接表或直接比较)
题目大意:打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。 如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。给出n个人及n组比赛输赢情况 ,判断该组选手群是否产生了冠军。 思路分析: 题中只让求能否产生冠军,所以只要有一个人的对应的“入度”为0就原创 2015-01-14 12:56:22 · 574 阅读 · 0 评论 -
HDU 2647 -- Reward (拓扑排序)
题目大意:老板给员工发奖金,每个员工对自己的奖金都有要求。他们的要求类似这样:A的奖金必须多余B。每个员工基础奖金888元。问:是否能满足所有员工?如果满足所有员工的要求,所发的总奖金最少是多少。 思路分析:对于输入的关系(a,b)要注意是a的奖金大于b,因为要求最少的金额,同时我们也能不确定最长的关系(也就是奖金最高为多少)所以我们倒过来建立关系,即(b,a),最少的钱数为888,以此依次增加原创 2015-01-14 13:41:06 · 372 阅读 · 0 评论 -
HDU 1811 -- Rank of Tetris(拓扑排序+并查集)
题目大意:题中给出要进行排名的人数N,每个人都被编号,从0到N-1, 以及M组这N个人的Rating信息,这些信息可能有三种情况,分别是"A > B","A = B","A Rating信息问能不能确定排行榜,如果不能确定要判断出不能确定的原因,是因为信息不完全(输出"UNCERTAIN")还是信息中有冲突输出"CONFLICT"),能输出"OK"。 思路分析: 一:情况问题分析:排名,要求拓原创 2015-01-14 12:09:03 · 311 阅读 · 0 评论