随笔分类 - 算法训练-图论-拓扑排序
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2647方法:该题需要贪心,即工资最低的直接取888的基本工资,而A的工资>B的工资 则A只比B多1. 实现方法是将输入的工资大于关系转换成小于关系,然后利用小于关系建立有向图的边。如输入a b(表示a工资比b高),则建立一个b到a的有向边(表示b工资比a低。建好图后,利用拓扑排序的方式,先把最开始的入度为0的顶点的工资设置为最低工资,删除该顶点后将其指向的节点 工资在刚才那个入度为0的基础上加1,入度减1,如果入度减少为0了,又同样迭代,本代码使用队列来实现该中迭代,有点类似广搜的方式。在拓扑
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285方法:以后比赛名次以前到后的有向边建立好有向图,然后开始拓扑排序。排序的方式为将入度为0的点压入优先队列,优先弹出其中序号最小的出队列,输出,然后扫描其所有指向的端点,将端点的入度减1,如果减少为0后,也同样压入优先队列,如果优先队列有多个入度减少为0的点,则下一次就又再优先弹出序号最小的,以此循环。最终比赛名次排出。感想:该题重点在于考察在拓扑排序的时候,如何才能在出现了两个入度为0的端点时,要优先输出的是序号比较小的。代码:View Code #include<iostream>
阅读全文
浙公网安备 33010602011771号