Create 求无向图的桥(get-bridge).cpp

This commit is contained in:
KiritoTRw 2016-08-13 23:19:13 +08:00 committed by GitHub
parent 741ce2b07f
commit 7f66c67824

View File

@ -0,0 +1,16 @@
int dfs[MAXN], low[MAXN], tim = 0;
inline void Dfs(int u)
{
dfs[u] = low[u] = ++tim;
for (Edge *p = a[u]; p; p = p->next) if (p->flag) {
if (!dfs[p->y]) {
p->opt->flag = false;
Dfs(p->y);
low[u] = min(low[u], low[p->y]);
} else low[u] = min(low[u], dfs[p->y]);
}
for (Edge *p = a[u]; p; p = p->next) if (p->opt->flag == false && low[p->y] > dfs[u]) {
p->bridge = p->opt->bridge = true;
}
}