【LeetCode每日一题系列】图论:拓扑排序----异步操作

本文通过一道笔试题介绍拓扑排序的应用,解释如何使用拓扑排序解决一个关于视频课程依赖的问题。题目要求计算每个课程视频在最短时间内的完成顺序。文章提供了题目描述、思路解析、代码实现以及时间复杂度分析。
摘要由CSDN通过智能技术生成

前言:这是一道笔试题目,虽然想到了拓扑排序,但是并没有对图论进行复习,因此对这道题目印象深刻,就该题讨论一下拓扑排序的实现


题目描述

小美因为各种原因无法及时返校,为了完成学业,小美只能在家里上网课,网案由n个课程视频组成,编号为1到n。每个视频都需要从头看到比才算完成该部分的学习,且某个视频只能在看完指定的一些视频之后才能开始播故。因为小美的学习能力和她用来上网课的电脑性能都很好,所以小美可以同时观看任意多个课程视频,现在小美想知道,若她不眠不休地学习,每个课程视频最早能在她开始学习多长时间之后才能结束。

输入描述
第一行有一个正整数n(1<=n<500),代表课程视频的数量。
接下来n行中的第i行开头有两个正整数L.C(1<=L<=100,0<=C<n)。L代表编号为i的视颇的时长为L分钟。C代表该观看该视频之前需要看完指定的C个视频。若C为零,则该视频可以立即观看。否则这一行接下来有C个用空格分开的正整数,代表编号为的视频所依赖的那些课程视频的编号。数字间两两有空格隔开.

输出描述
输出一行,每一行结果都显示每个课程结束时间。数字间两两空格隔开。

样例:
输入
3
4 0
2 2 1 3
3 0
输出
4 6 3

题目思路

题目转化 虽然题目用了很长时间去描述小美的故事,但是我们实质抽象去看待问题,这也就是一个图论问题。每一个课程即一个图的节点,可以同时观看任意多个视频,我们无须考虑课程数量。但是课程会受前置视频的影响,也就是说学习该课程完整视频实质上是一个有向无环图
样例转化 我们简单的用上述样例将课程转化成有向无环图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值