割边:对于一个无向图,如果掉一条边后图中的连通块个数增加了.
则称这条边为桥或者割边。
割边判定法则:
当搜索树上存在 × 的一个子节点 y. 满足 low[y]>dfn[x], 则 (x.y)这条边
就是割边。
板子
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;int head[N], to[N], nxt[N], w[N];
int tot=1;
void add(int a, int b, int c)
{nxt[++tot] = head[a];head[a] = tot;to[tot] = b;w[tot] = c;
}int dfn[N], low[N], tim;
int fa[N];
int ans;
int cut[N];//是否为割边
void tarjan(int u)
{dfn[u] = low[u] = ++tim;for (int i = head[u]; i; i = nxt[i]){int v = to[i];if(i==(fa[u]^1)) //反向边跳过continue;if (!dfn[v]){tarjan(v);low[u] = min(low[u], low[v]);if(low[u]>dfn[v]){ans++;cut[i]=cut[i^1]=1;}}else if (dfn[v])//说明v为深度小于u,指向了祖先{low[u] = min(low[u], dfn[v]);}}
}
int main()
{return 0;
}