tarjan求强连通分量模板

代码:

复制代码
 1 void tarjan(int u) {
 2     dfn[u] = ++dfncnt;
 3     low[u] = dfncnt;
 4     st.push(u);
 5     ins[u] = true;
 6     for (int i = 0; i < SPG[u].size(); i++) {
 7         int v = SPG[u][i].to;
 8         if (!dfn[v]) {
 9             tarjan(v);
10             low[u] = min(low[u], low[v]);
11         }
12         else if (ins[v]) {
13             low[u] = min(low[u], dfn[v]);
14         }
15     }
16     if (dfn[u] == low[u]) {
17         int v;
18         ++scccnt;
19         do {
20             v = st.top();
21             st.pop();
22             ins[v] = false;
23             scc[v] = scccnt;
24         } while (u != v);
25     }
26 }
复制代码

 

 
posted @   Keyzee  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示