项目中有N个模块。
每个模块(i)完成时间以小时数(Hi)表示,可能取决于其他模块。如果模块x依赖于模块y,则需要在x之前完成y。项目经理,要求您尽早交付项目。提供完成项目所需时间的估计。
输入格式:
第一行包含T,测试用例数。
对于每个测试用例:第一行包含N个模块数。接下来的N行,每行包含:(i)模块ID(Hi)完成模块所需的小时数(D)我依赖的模块ID集合 - 由空格分隔的整数。
输出格式:
输出交付项目所需的最少小时数。
Input: 1
5
1 5
2 6 1
3 3 2
4 2 3
5 1 3
output: 16
我知道问题与拓扑排序有关。但是不知道如何找到总小时数。
答案 0 :(得分:0)
创建有向图G如果a依赖于b将G中的有向边从b添加到G上的应用拓扑排序它可以说我们将它存储在名为TOPO []的数组中,初始化时间= H(0) 现在从第二个元素开始在TOPO数组上运行一个循环。
检查TOPO [i]是否依赖于TOPO [i-1]如果是这样我们必须一个接一个地执行它们,所以添加他们的任务时间
unread
如果TOPO [i]不依赖于TOPo [i-1]那么我们可以一起执行它们,因此最多可以完成任务时间
time=time+H(i)
循环结束后变量时间将有你的答案
" 分别为每个组件执行此操作并采用所有
的最大值