拓扑排序
介绍
拓扑排序,对于一个 DAG,每次去掉入度为 的边,最后将图去光,就是拓扑排序。
拓扑排序可以处理一些有序东西,比如在日常工作中,可能会将项目拆分成 四个子部分来完成,但 依赖于 和 , 依赖于 (有先后顺序)。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。()
代码实现如下:
例题
1. NOIP2013普及T4 车站分级
题目中说,如果这趟车次停靠了火车站 ,则始发站、终点站之间所有级别大于等于火车站 的都必须停靠。也就是说,这趟车次经过且不停靠的所有车站的级别都必须小于这趟车次停靠的所有车站的级别。
可以用有向图连接,由等级低的车站向等级高的车站连一条边,就是从低到高的,然后做个拓扑排序再统计下等级数即可。
2. 洛谷P1437 排序
几个增大不等式,显然可以建图跑拓扑。
若根据前 个关系即可确定这 个元素的顺序,输出
Sorted sequence determined after xxx relations: 顺序.
(顺序不写符号,直接写字母)
若根据前 个关系即发现存在矛盾(如 ),输出
Inconsistency found after 2 relations.
若根据这 个关系无法确定这 个元素的顺序,输出
Sorted sequence cannot be determined.
- 判第二个就是拓扑不完,也就是有环。
- 判第三个就是拓扑时拓展了多个节点,导致这些同级的东西分不清。
- 否则就是第一个。
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/12727833.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】