1、直接用个vector数组存一下依赖关系,同时用一个数组记录每个任务在图中的入度。
2、n次遍历,每次从所有的任务中找到入度为0的任务,当有多个,优先选时间相同,时间相同优先选编号小的(字典序),这个可以通过每次从1开始遍历来实现,这样的时间复杂度是平方,但是任务数量不多可以AC,如果任务很多可以用优先队列优化为nlogn。
3、当选出上述的一个任务之后,根据图来确定哪些任务能成为新的入度为0的任务(拓扑排序)。
为了避免重复,需要一个额外的flag数组来表示哪些任务已经执行了。

这是我AC的思路,大致是这样...