去哪儿编程题
发布于 2017-09-26 09:16 2686 次浏览 0 赞 来自 试题交流  

带权的DAG节点排序

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

DAG 即 Directed Acyclic Graph, 有向无环图. 用DAG可以描述一些有依赖关系的任务组, 而这些任务还有另外一个属性, 即都有一个权重, 标示这个任务的重要性.

我们需要你来实现一个算法, 对DAG里面的节点进行排序, 保证排序不违背DAG的依赖关系, 即一个任务A如果排在任务B前面, 那么在DAG中不能存在由B 到A的路径. 另外一个要求就是, 让权重大的任务尽量优先执行.

输入

在第一行给定 DAG的节点数n和边数e.

后面n行, 每一行是 节点的 标号和权重, seq weight.

最后e行, 每一行是对于边的描述, s t.

样例输入

4 4

1 2

2 3

3 5

4 4

1 2

1 3

2 4

3 4

<div class="outputarea yangli ng-scope" style='box-sizing: border-box; margin: 0px; padding: 0px; font-family: "Microsoft Yahei";' ng-if="model.ques.questype==6 && model.ques.outputSample != null && model.ques.outputSample!=''" "="">

样例输出

1 3 2 4


7 条回复

这题有没有大佬作出来的 我20%

2017-09-26 10:41
1
coder_6TR5HJN2 回复 coder_UDHMTDE8

百分之三十

2017-09-26 10:43 1

40%,不是广度优先遍历吗

2017-09-26 11:01
coder_UDHMTDE8 回复 coder_X4CV9SHR

贴出来

2017-09-26 11:01
coder_UVR9NBM5 回复 coder_X4CV9SHR

我怎么感觉是 贪心+拓扑排序

2017-09-26 11:07

不应该先排权重序列,然后再按第二个条件排吗?  我百分之60

2017-09-26 11:16

考试时是40%,后来改了下但不知到有没有超

2017-09-27 13:07
添加回复
回到顶部