拓扑排序
luckyone2014
想思路是苦涩艰辛的,但是打代码是愉快的。
展开
-
hdu4857 逃生 反拓扑排序+优先队列, 靠前的数字的优先输出.
这是一道反拓扑排序题. 糟糕的事情发生啦,现在大家都忙着逃命。但是逃命的通道很窄,大家只能排成一行。 现在有n个人,从1标号到n。同时有一些奇怪的约束条件,每个都形如:a必须在b之前。 同时,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。有钱人就贿赂负责人,所以他们有一些好处。原创 2014-07-27 10:57:38 · 793 阅读 · 0 评论 -
hdu 5098 Smart Software Installer 拓扑排序or记忆化搜索
题意: 第一行 案例数。 然后每个案例用空行隔开。 每个案例都有若干行 ,第一个单词表示一个软件,如果名字后面有*号,代表安装这个软件需要重启。 多个软件可以同时 一次重启 安装。然后冒号后面 表示安装这个软件需要先安装的软件。 做法: 有两种做法,不过都需要先建图。用get函数来把字符串变成编号。 id 表示冒号前的软件,fu表示冒号后面的软件。要把 id 存入 vector son[fu], 就像树一样存。然后把 id的入度++; 第一种做法,拓扑排序。把入度为0的 且不需要重启的 存入q1队列原创 2015-05-07 21:30:40 · 883 阅读 · 0 评论 -
hdu 1811 Rank of Tetris 并查集+拓扑排序
做法:把等于的用并查集放一起,找出最小的数,也就是入度为零的数。然后开始拓扑,拓扑就是每次把入度为0,也就是剩下点中最小的数拿来,再把它的上一个入度减掉。 如果有点没访问,就是说明有环,说明矛盾。 如果队列同时有两个点在,说明这两个点大小关系不明,不明确。原创 2015-07-10 14:42:18 · 671 阅读 · 0 评论