From 7f66c678245ca19a4f2fe40c855df41961504735 Mon Sep 17 00:00:00 2001 From: KiritoTRw <3021577574@qq.com> Date: Sat, 13 Aug 2016 23:19:13 +0800 Subject: [PATCH] =?UTF-8?q?Create=20=E6=B1=82=E6=97=A0=E5=90=91=E5=9B=BE?= =?UTF-8?q?=E7=9A=84=E6=A1=A5(get-bridge).cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Graph/求无向图的桥(get-bridge).cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .ACM-Templates/Graph/求无向图的桥(get-bridge).cpp diff --git a/.ACM-Templates/Graph/求无向图的桥(get-bridge).cpp b/.ACM-Templates/Graph/求无向图的桥(get-bridge).cpp new file mode 100644 index 0000000..8978be2 --- /dev/null +++ b/.ACM-Templates/Graph/求无向图的桥(get-bridge).cpp @@ -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; + } +} +