拓扑排序(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);
    }
}
相关推荐
淀粉肠kk12 小时前
【C++11】智能指针详解
开发语言·c++
不想写代码的星星12 小时前
COW(Copy-on-Write):开抄开抄,哎嘿,我装的
开发语言·c++
Sylvia-girl12 小时前
C++内存如何管理?
java·jvm·c++
shehuiyuelaiyuehao12 小时前
算法14,滑动窗口,找到字符串中所有字母异位词
算法
凯瑟琳.奥古斯特12 小时前
图论核心考点精讲
开发语言·数据结构·算法·排序算法·哈希算法
WolfGang00732112 小时前
代码随想录算法训练营 Day49 | 图论 part07
算法·图论
啦啦啦_999912 小时前
案例之 逻辑回归_癌症预测
算法·机器学习·逻辑回归
StockTV12 小时前
韩国股票实时数据 KOSPI(主板)和 KOSDAQ(创业板)的实时行情、K 线及指数数据
java·开发语言·算法·php
byte轻骑兵12 小时前
【LE Audio】BASS精讲[5]: 状态特征解析,广播接收状态实时可视全流程
人工智能·算法·音视频·语音识别·le audio·低功耗音频
无敌秋12 小时前
C++ 单例模式
c++·单例模式