拓扑排序(topological-sort)

拓扑排序

模板

cpp 复制代码
queue<int> q;
vector<int> v;
for(int i=1;i<=n;++i)
    if(!in[i]) q.push(i);
while(q.size()){
    int x=q.front();
    q.pop();
    v.pb(x); //拓扑序列
    for(int i=head[x];i;i=ne[i]){
        int y=to[i];
        in[y]--;
        if(!in[y]) q.push(y);
    }
}

1.判断是否成环

并查集判 无向图的环,拓扑排序判 有向图的环。

如果拓扑序列点的数量不等于总点数,那么有环。

2.在遍历树时,数出上头需要当前点几次

cpp 复制代码
queue<int> q;
for(int i=1;i<=n;++i)
    if(!in[i]) q.push(i);
vis[n]=1;
while(q.size()){
    int x=q.front();
    q.pop();
    for(int i=head[x];i;i=ne[i]){
        int y=to[i];
        vis[y]+=vis[x];
        in[y]--;
        if(!in[y]) q.push(y);
    }
}
相关推荐
AI进化营-智能译站4 分钟前
ROS2 C++开发系列18-STL容器实战:deque缓存激光雷达数据|priority_queue调度任务
开发语言·c++·缓存·ai
ulias2127 分钟前
leetcode热题 - 5
数据结构·算法·leetcode
Funny_AI_LAB17 分钟前
Naval最新播客谈“氛围编码”:Vibe Coding 开启“一人独角兽”时代
人工智能·算法·语言模型·agi
如何原谅奋力过但无声17 分钟前
【灵神高频面试题合集04-05】二分查找
数据结构·python·算法·leetcode
hehelm18 分钟前
C++11 新特性
c++
我不是懒洋洋21 分钟前
【数据结构】排序算法(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序)
c语言·数据结构·c++·经验分享·算法·排序算法
MediaTea21 分钟前
ML:逻辑回归的基本原理与实现
人工智能·算法·机器学习·数据挖掘·逻辑回归
邪修king23 分钟前
UE5:C++ 实现 游戏逻辑 ↔ UI 双向联动
c++·游戏·ue5
超级码力6669 小时前
【Latex文件架构】Latex文件架构模板
算法·数学建模·信息可视化
穿条秋裤到处跑9 小时前
每日一道leetcode(2026.04.29):二维网格图中探测环
算法·leetcode·职场和发展