From e6f2b9673bb32025d1c1df74ec6b64767afb7ea2 Mon Sep 17 00:00:00 2001 From: Baoshuo Date: Sat, 8 Jan 2022 19:21:57 +0800 Subject: [PATCH] =?UTF-8?q?395.=20=E5=86=97=E4=BD=99=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://www.acwing.com/problem/content/submission/code_detail/9781902/ --- AcWing/395/395.cpp | 76 ++++++++++++++++++++++++++++++++++++++ AcWing/395/data/395_12.ans | 3 ++ AcWing/395/data/395_12.in | 3 ++ AcWing/395/data/395_5.ans | 3 ++ AcWing/395/data/395_5.in | 3 ++ AcWing/395/data/395_9.ans | 3 ++ AcWing/395/data/395_9.in | 3 ++ 7 files changed, 94 insertions(+) create mode 100644 AcWing/395/395.cpp create mode 100644 AcWing/395/data/395_12.ans create mode 100644 AcWing/395/data/395_12.in create mode 100644 AcWing/395/data/395_5.ans create mode 100644 AcWing/395/data/395_5.in create mode 100644 AcWing/395/data/395_9.ans create mode 100644 AcWing/395/data/395_9.in diff --git a/AcWing/395/395.cpp b/AcWing/395/395.cpp new file mode 100644 index 00000000..5b8f44c9 --- /dev/null +++ b/AcWing/395/395.cpp @@ -0,0 +1,76 @@ +#include +#include + +using std::cin; +using std::cout; +using std::endl; + +const int N = 5005, + M = 10005; + +int f, r, ans; + +// Graph +int idx, head[N], edge[M], next[M]; + +void add(int u, int v) { + next[idx] = head[u]; + edge[idx] = v; + head[u] = idx++; +} + +// Tarjan +int cnt, dfn[N], low[N]; +int dcc_cnt, id[N]; +std::stack st; + +int deg[N]; +bool bridge[N]; + +void tarjan(int u, int in_edge) { + dfn[u] = low[u] = ++cnt; + st.push(u); + for (int i = head[u]; ~i; i = next[i]) { + int v = edge[i]; + if (!dfn[v]) { + tarjan(v, i); + low[u] = std::min(low[u], low[v]); + if (dfn[u] < low[v]) { + bridge[i] = bridge[i ^ 1] = true; + } + } else if (i != (in_edge ^ 1)) { + low[u] = std::min(low[u], dfn[v]); + } + } + if (low[u] == dfn[u]) { + dcc_cnt++; + int v; + do { + v = st.top(); + st.pop(); + id[v] = dcc_cnt; + } while (v != u); + } +} + +int main() { + std::fill(head, head + N, -1); + cin >> f >> r; + for (int i = 1; i <= r; i++) { + int u, v; + cin >> u >> v; + add(u, v); + add(v, u); + } + tarjan(1, -1); + for (int i = 0; i < idx; i++) { + if (bridge[i]) { + deg[id[edge[i]]]++; + } + } + for (int i = 1; i <= dcc_cnt; i++) { + if (deg[i] == 1) ans++; + } + cout << (ans + 1 >> 1) << endl; + return 0; +} diff --git a/AcWing/395/data/395_12.ans b/AcWing/395/data/395_12.ans new file mode 100644 index 00000000..38118f32 --- /dev/null +++ b/AcWing/395/data/395_12.ans @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53c234e5e8472b6ac51c1ae1cab3fe06fad053beb8ebfd8977b010655bfdd3c3 +size 2 diff --git a/AcWing/395/data/395_12.in b/AcWing/395/data/395_12.in new file mode 100644 index 00000000..e26b19da --- /dev/null +++ b/AcWing/395/data/395_12.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b64dfdf27361fe7f37047d61c7348800f411320af65b2ce68ecc0a958e9bd0ca +size 109 diff --git a/AcWing/395/data/395_5.ans b/AcWing/395/data/395_5.ans new file mode 100644 index 00000000..d64af66b --- /dev/null +++ b/AcWing/395/data/395_5.ans @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2115cdb6bfcfb008eb2bab2bb79347cb064a48e4e7c4115ccbe4469c787bb6c4 +size 3 diff --git a/AcWing/395/data/395_5.in b/AcWing/395/data/395_5.in new file mode 100644 index 00000000..71e94558 --- /dev/null +++ b/AcWing/395/data/395_5.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7abdedc07e6d19b6d44ae7cc8e8d99a2161fe4cd924c3e6d000c2bbbff7b6057 +size 1737 diff --git a/AcWing/395/data/395_9.ans b/AcWing/395/data/395_9.ans new file mode 100644 index 00000000..38118f32 --- /dev/null +++ b/AcWing/395/data/395_9.ans @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53c234e5e8472b6ac51c1ae1cab3fe06fad053beb8ebfd8977b010655bfdd3c3 +size 2 diff --git a/AcWing/395/data/395_9.in b/AcWing/395/data/395_9.in new file mode 100644 index 00000000..dd650224 --- /dev/null +++ b/AcWing/395/data/395_9.in @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:279c66bc1c389cf428cae1cca89b915fb4f402816412e5738dbb962832d753ba +size 56