1 条题解
-
0
题解
思路推导
把“第 章要求先理解第 章”看作一条有向边 。若图中存在有向环,环上的任意一章都要等待环内另一章,因此整本书永远无法被完全理解。
假设依赖图无环。设 为最早能理解第 章时已经阅读整本书的遍数。沿依赖边 考虑:如果 ,同一遍阅读中先读到 ,随后还能理解 ,所以只要求 ;如果 ,这一遍先错过了 才读到 ,必须等下一遍,因此要求 。
做法
按依赖关系建立有向图并统计每个顶点的入度。把所有入度为零的章节加入队列,初始最早遍数均为 。
每次取出一个章节 ,枚举它指向的章节 ,用
更新。随后将 的入度减一;入度归零时加入队列。
若最终处理的章节数不足 ,图中存在环,答案为 。否则答案为所有 的最大值。
正确性证明
拓扑处理中,一个章节入队时,它的全部前置章节都已处理。对每条依赖边,转移准确表达了前置章节与当前章节能否在同一遍按编号顺序读到,因此 不小于任何合法阅读过程对该边要求的最早遍数。
反过来,按照计算出的遍数阅读:当在第 遍读到 时,对每个前置章节 ,若 ,转移保证 ,本遍会先理解 ;若 ,转移保证 ,此前已经理解 。所以所有前置条件都满足。由拓扑序归纳,计算值可实现且最小。
若存在有向环,环上没有章节能在其全部前置章节之前被首先理解;若拓扑处理完全部章节,则图无环。因此环的判定也正确。
复杂度分析
设所有前置关系总数为 。每个章节和每条边只处理常数次,时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1150
- 时间
- 1500ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者