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

本文共 714 字,大约阅读时间需要 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/

你可能感兴趣的文章
Objective-C实现DisjointSet并查集的算法(附完整源码)
查看>>
Objective-C实现djb2哈希算法(附完整源码)
查看>>
Objective-C实现DNF排序算法(附完整源码)
查看>>
Objective-C实现doomsday末日算法(附完整源码)
查看>>
Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
查看>>
Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
查看>>
Objective-C实现double hash双哈希算法(附完整源码)
查看>>
Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
查看>>
Objective-C实现double linear search 双线性搜索算法(附完整源码)
查看>>
Objective-C实现double sort双重排序算法(附完整源码)
查看>>
Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
查看>>
Objective-C实现DoublyLinkedList双链表算法(附完整源码)
查看>>
Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
查看>>
Objective-C实现DWT离散小波变换(附完整源码)
查看>>
Objective-C实现Edmonds-Karp算法(附完整源码)
查看>>
Objective-C实现EEMD算法(附完整源码)
查看>>
Objective-C实现elgamal 密钥生成器算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现entropy熵算法(附完整源码)
查看>>