拓扑排序(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);
    }
}
相关推荐
StudyWinter19 小时前
【c++】thread总结
开发语言·c++·算法
@小白鸽19 小时前
匿名函数lambda
c++·匿名函数
饕餮怪程序猿19 小时前
贪心算法经典应用:活动选择问题(C++实现)
c++·算法·贪心算法
暗然而日章19 小时前
C++基础:Stanford CS106L学习笔记 15 RAII&智能指针&构建C++工程
c++·笔记·学习
光羽隹衡19 小时前
决策树项目——电信客户流失预测
算法·决策树·机器学习
TL滕19 小时前
从0开始学算法——第二十一天(高级链表操作)
笔记·学习·算法
CoovallyAIHub19 小时前
无人机低空视觉数据集全景解读:从单机感知到具身智能的跨越
深度学习·算法·计算机视觉
学编程就要猛19 小时前
算法:1.移动零
java·算法
杜子不疼.19 小时前
【LeetCode 35 & 69_二分查找】搜索插入位置 & x的平方根
算法·leetcode·职场和发展
YYDS31419 小时前
次小生成树
c++·算法·深度优先·图论·lca最近公共祖先·次小生成树