博客
关于我
【模板】有向图tarjan
阅读量:171 次
发布时间:2019-02-28

本文共 740 字,大约阅读时间需要 2 分钟。

#include 
using namespace std;
const int N = 10005, M = 50005;
vector
son[N];
int dfn[N], low[N], num, s[N], out[N], top, cnt;
int scc[N];
int sz[N], n, m;
void tarjan(int u) {
low[u] = dfn[u] = ++num;
s[++top] = u;
for (int i = 0; i < son[u].size(); ++i) {
if (dfn[son[u][i]] == 0) {
tarjan(son[u][i]);
low[u] = min(low[u], low[son[u][i]]);
} else if (dfn[son[u][i]] < dfn[u]) {
low[u] = min(low[u], dfn[son[u][i]]);
}
}
if (low[u] == dfn[u]) {
++cnt;
scc[cnt] = top;
sz[cnt] = top - s[0] + 1;
for (int v = s[top]; top-- < s[0]; v = s[--top]) {
out[v] = cnt;
sz[cnt]--;
}
}
}

转载地址:http://iawn.baihongyu.com/

你可能感兴趣的文章
nodejs模块——fs模块
查看>>
Nodejs模块、自定义模块、CommonJs的概念和使用
查看>>
nodejs生成多层目录和生成文件的通用方法
查看>>
nodejs端口被占用原因及解决方案
查看>>
Nodejs简介以及Windows上安装Nodejs
查看>>
nodejs系列之express
查看>>
nodejs系列之Koa2
查看>>
Nodejs连接mysql
查看>>
nodejs连接mysql
查看>>
NodeJs连接Oracle数据库
查看>>
nodejs配置express服务器,运行自动打开浏览器
查看>>
NodeMCU教程 http请求获取Json中文乱码解决方案
查看>>
Nodemon 深入解析与使用
查看>>
NodeSession:高效且灵活的Node.js会话管理工具
查看>>
node~ http缓存
查看>>
node不是内部命令时配置node环境变量
查看>>
node中fs模块之文件操作
查看>>
Node中同步与异步的方式读取文件
查看>>
node中的get请求和post请求的不同操作【node学习第五篇】
查看>>
Node中的Http模块和Url模块的使用
查看>>