拓扑排序
拓扑序就是后边走的点有前边的先决条件

上图就是个拓扑序 学数据结构之前必须先学习c语言 以此类推
学习顺序可以是
- c语言 数据结构 python 面向对象 c++ linux 网、系统 分布式项目
- c语言 linux 数据结构 网、系统 python 面向对象 c++ 分布式项目
- …
拓扑序不唯一
拓扑排序不能有环,有环就不行了
- 入度:有几条边的终点是该点
- 出度:有几条边的起点是该点
- 度 = 出度 + 入度
拓扑排序流程:
- 求入度
- 看入度为零的点为起点
- 从起点遍历能到达的点 将能到达的点的边删掉 使后边的点的入度为0
- 将入度为零的点放入队列
- 将序列走一遍 重复3.4 走完的顺序即位拓扑序
- ps:当要求拓扑序从大到小或者从小到达时可以将queue改为priority_queue
eg:

- 统计入度

入度为零为起点
- 从起点往后走 能到达的点的入度减一 当点的入度为0 加在队列中

- 将队列中的点都走一遍 走完的点的顺序即位答案顺序


//topo 字典序最小
#include<iostream>
using namespace std;
#include<cstring>
#include<queue>
//链式前向星存边
struct edge{
int to, next;
拓扑排序是对有向无环图(DAG)的顶点进行排序,使得对于每一条从顶点u到顶点v的有向边,u都在v之前。本文介绍了拓扑排序的概念、性质,以及如何通过求入度和使用队列实现排序过程。拓扑排序的结果不唯一,并且在存在环的情况下无法进行。
最低0.47元/天 解锁文章
3723

被折叠的 条评论
为什么被折叠?



