From f5266092a1a337b86ce51492fe5a720727b4f6e2 Mon Sep 17 00:00:00 2001 From: subcrip Date: Tue, 16 Apr 2024 18:19:10 +0800 Subject: [PATCH] Update graph/tarjan.cc --- graph/tarjan.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/graph/tarjan.cc b/graph/tarjan.cc index 8728649..84616b4 100644 --- a/graph/tarjan.cc +++ b/graph/tarjan.cc @@ -41,4 +41,23 @@ namespace tarjan { } return res; } -} \ No newline at end of file + vector>> build_scc_with_size(const vector>& ch) { + int n = ch.size(); + auto br = scc(ch); + int cnt = *max_element(br.begin(), br.end()); + vector> rb(cnt + 1); + for (int i = 0; i < n; ++i) { + for (auto&& u : ch[i]) { + rb[br[i]].emplace(br[u]); + } + } + vector>> res(cnt + 1); + for (int i = 1; i <= cnt; ++i) { + res[i].second = vector(rb[i].begin(), rb[i].end()); + } + for (int i = 1; i <= n; ++i) { + res[br[i]].first += 1; + } + return res; + } +}