Skip to content

Commit bf3630c

Browse files
authored
[auto-verifier] docs commit b9b6012
1 parent 3187eb0 commit bf3630c

File tree

6 files changed

+163
-31
lines changed

6 files changed

+163
-31
lines changed

index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ data:
1414
verificationCategories:
1515
- name: test
1616
pages:
17+
- icon: ':heavy_check_mark:'
18+
path: test/strongly_connected_components.test.cpp
19+
title: test/strongly_connected_components.test.cpp
1720
- icon: ':heavy_check_mark:'
1821
path: test/two_edge_connected_components.test.cpp
1922
title: test/two_edge_connected_components.test.cpp
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
data:
3+
_extendedDependsOn:
4+
- icon: ':heavy_check_mark:'
5+
path: weilycoder/graph/tarjan.hpp
6+
title: weilycoder/graph/tarjan.hpp
7+
_extendedRequiredBy: []
8+
_extendedVerifiedWith: []
9+
_isVerificationFailed: false
10+
_pathExtension: cpp
11+
_verificationStatusIcon: ':heavy_check_mark:'
12+
attributes:
13+
'*NOT_SPECIAL_COMMENTS*': ''
14+
PROBLEM: https://judge.yosupo.jp/problem/scc
15+
links:
16+
- https://judge.yosupo.jp/problem/scc
17+
bundledCode: "#line 1 \"test/strongly_connected_components.test.cpp\"\n#define PROBLEM\
18+
\ \"https://judge.yosupo.jp/problem/scc\"\n\n#line 1 \"weilycoder/graph/tarjan.hpp\"\
19+
\n\n\n\n#include <algorithm>\n#include <cstddef>\n#include <stack>\n#include <utility>\n\
20+
#include <vector>\n\nnamespace weilycoder {\ntemplate <typename ptr_t = size_t>\
21+
\ struct TwoEdgeConnectedComponents {\n ptr_t dfs_time = 0, edge_time = 1;\n\n\
22+
\ std::vector<bool> in_stack;\n std::stack<ptr_t> stk;\n std::vector<ptr_t>\
23+
\ dfn, low;\n std::vector<std::vector<std::pair<ptr_t, ptr_t>>> graph;\n\n std::vector<std::vector<ptr_t>>\
24+
\ eccs;\n\n TwoEdgeConnectedComponents(ptr_t n)\n : in_stack(n, false),\
25+
\ dfn(n, 0), low(n, 0), graph(n) {}\n\n void add_edge(ptr_t u, ptr_t v) {\n \
26+
\ graph[u].emplace_back(v, edge_time);\n graph[v].emplace_back(u, edge_time);\n\
27+
\ edge_time++;\n }\n\n void tarjan(ptr_t u, ptr_t parent_edge) {\n dfn[u]\
28+
\ = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] = true;\n\n for\
29+
\ (const auto &[v, edge_id] : graph[u]) {\n if (edge_id == parent_edge)\n\
30+
\ continue;\n if (!dfn[v])\n tarjan(v, edge_id), low[u] = std::min(low[u],\
31+
\ low[v]);\n else if (in_stack[v])\n low[u] = std::min(low[u], dfn[v]);\n\
32+
\ }\n\n if (dfn[u] == low[u]) {\n eccs.emplace_back();\n eccs.back().push_back(u);\n\
33+
\ in_stack[u] = false;\n while (stk.top() != u)\n eccs.back().push_back(stk.top()),\
34+
\ in_stack[stk.top()] = false, stk.pop();\n stk.pop();\n }\n }\n\n void\
35+
\ solve() {\n for (size_t i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n\
36+
\ tarjan(i, 0);\n }\n};\n\ntemplate <typename ptr_t = size_t> struct StrongConnectedComponents\
37+
\ {\n ptr_t dfs_time = 0;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
38+
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<ptr_t>> graph;\n\
39+
\n std::vector<std::vector<ptr_t>> sccs;\n\n StrongConnectedComponents(ptr_t\
40+
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
41+
\ add_edge(ptr_t u, ptr_t v) { graph[u].push_back(v); }\n\n void tarjan(ptr_t\
42+
\ u) {\n dfn[u] = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] =\
43+
\ true;\n\n for (const auto &v : graph[u]) {\n if (!dfn[v])\n tarjan(v),\
44+
\ low[u] = std::min(low[u], low[v]);\n else if (in_stack[v])\n low[u]\
45+
\ = std::min(low[u], dfn[v]);\n }\n\n if (dfn[u] == low[u]) {\n sccs.emplace_back();\n\
46+
\ sccs.back().push_back(u);\n in_stack[u] = false;\n while (stk.top()\
47+
\ != u)\n sccs.back().push_back(stk.top()), in_stack[stk.top()] = false,\
48+
\ stk.pop();\n stk.pop();\n }\n }\n\n void solve() {\n for (size_t\
49+
\ i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n tarjan(i);\n std::reverse(sccs.begin(),\
50+
\ sccs.end());\n }\n};\n} // namespace weilycoder\n\n\n#line 4 \"test/strongly_connected_components.test.cpp\"\
51+
\n#include <iostream>\nusing namespace std;\nusing namespace weilycoder;\n\nint\
52+
\ main() {\n cin.tie(nullptr)->sync_with_stdio(false);\n cin.exceptions(cin.failbit\
53+
\ | cin.badbit);\n size_t n, m;\n cin >> n >> m;\n\n StrongConnectedComponents\
54+
\ graph(n);\n for (size_t i = 0; i < m; ++i) {\n size_t u, v;\n cin >>\
55+
\ u >> v;\n graph.add_edge(u, v);\n }\n\n graph.solve();\n\n cout << graph.sccs.size()\
56+
\ << '\\n';\n for (const auto &ecc : graph.sccs) {\n cout << ecc.size();\n\
57+
\ for (size_t u : ecc)\n cout << ' ' << u;\n cout << '\\n';\n }\n\
58+
\ return 0;\n}\n"
59+
code: "#define PROBLEM \"https://judge.yosupo.jp/problem/scc\"\n\n#include \"../weilycoder/graph/tarjan.hpp\"\
60+
\n#include <iostream>\nusing namespace std;\nusing namespace weilycoder;\n\nint\
61+
\ main() {\n cin.tie(nullptr)->sync_with_stdio(false);\n cin.exceptions(cin.failbit\
62+
\ | cin.badbit);\n size_t n, m;\n cin >> n >> m;\n\n StrongConnectedComponents\
63+
\ graph(n);\n for (size_t i = 0; i < m; ++i) {\n size_t u, v;\n cin >>\
64+
\ u >> v;\n graph.add_edge(u, v);\n }\n\n graph.solve();\n\n cout << graph.sccs.size()\
65+
\ << '\\n';\n for (const auto &ecc : graph.sccs) {\n cout << ecc.size();\n\
66+
\ for (size_t u : ecc)\n cout << ' ' << u;\n cout << '\\n';\n }\n\
67+
\ return 0;\n}\n"
68+
dependsOn:
69+
- weilycoder/graph/tarjan.hpp
70+
isVerificationFile: true
71+
path: test/strongly_connected_components.test.cpp
72+
requiredBy: []
73+
timestamp: '2025-10-28 21:05:17+08:00'
74+
verificationStatus: TEST_ACCEPTED
75+
verifiedWith: []
76+
documentation_of: test/strongly_connected_components.test.cpp
77+
layout: document
78+
redirect_from:
79+
- /verify/test/strongly_connected_components.test.cpp
80+
- /verify/test/strongly_connected_components.test.cpp.html
81+
title: test/strongly_connected_components.test.cpp
82+
---

test/two_edge_connected_components.test.cpp.md

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,39 @@ data:
1616
- https://judge.yosupo.jp/problem/two_edge_connected_components
1717
bundledCode: "#line 1 \"test/two_edge_connected_components.test.cpp\"\n#define PROBLEM\
1818
\ \"https://judge.yosupo.jp/problem/two_edge_connected_components\"\n\n#line 1\
19-
\ \"weilycoder/graph/tarjan.hpp\"\n\n\n\n#include <cstddef>\n#include <stack>\n\
20-
#include <utility>\n#include <vector>\n\nnamespace weilycoder {\ntemplate <typename\
21-
\ ptr_t = size_t> struct TwoEdgeConnectedComponents {\n ptr_t dfs_time = 0, edge_time\
22-
\ = 1;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t> stk;\n std::vector<ptr_t>\
23-
\ dfn, low;\n std::vector<std::vector<std::pair<ptr_t, ptr_t>>> graph;\n\n std::vector<std::vector<ptr_t>>\
24-
\ eccs;\n\n TwoEdgeConnectedComponents(ptr_t n)\n : in_stack(n, false),\
25-
\ dfn(n, 0), low(n, 0), graph(n) {}\n\n void add_edge(ptr_t u, ptr_t v) {\n \
26-
\ graph[u].emplace_back(v, edge_time);\n graph[v].emplace_back(u, edge_time);\n\
27-
\ edge_time++;\n }\n\n void tarjan(ptr_t u, ptr_t parent_edge) {\n dfn[u]\
28-
\ = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] = true;\n\n for\
29-
\ (const auto &[v, edge_id] : graph[u]) {\n if (edge_id == parent_edge)\n\
30-
\ continue;\n if (!dfn[v])\n tarjan(v, edge_id), low[u] = std::min(low[u],\
31-
\ low[v]);\n else if (in_stack[v])\n low[u] = std::min(low[u], dfn[v]);\n\
32-
\ }\n\n if (dfn[u] == low[u]) {\n eccs.emplace_back();\n eccs.back().push_back(u);\n\
33-
\ in_stack[u] = false;\n while (stk.top() != u)\n eccs.back().push_back(stk.top()),\
19+
\ \"weilycoder/graph/tarjan.hpp\"\n\n\n\n#include <algorithm>\n#include <cstddef>\n\
20+
#include <stack>\n#include <utility>\n#include <vector>\n\nnamespace weilycoder\
21+
\ {\ntemplate <typename ptr_t = size_t> struct TwoEdgeConnectedComponents {\n\
22+
\ ptr_t dfs_time = 0, edge_time = 1;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
23+
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<std::pair<ptr_t,\
24+
\ ptr_t>>> graph;\n\n std::vector<std::vector<ptr_t>> eccs;\n\n TwoEdgeConnectedComponents(ptr_t\
25+
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
26+
\ add_edge(ptr_t u, ptr_t v) {\n graph[u].emplace_back(v, edge_time);\n \
27+
\ graph[v].emplace_back(u, edge_time);\n edge_time++;\n }\n\n void tarjan(ptr_t\
28+
\ u, ptr_t parent_edge) {\n dfn[u] = low[u] = ++dfs_time;\n stk.push(u);\n\
29+
\ in_stack[u] = true;\n\n for (const auto &[v, edge_id] : graph[u]) {\n\
30+
\ if (edge_id == parent_edge)\n continue;\n if (!dfn[v])\n \
31+
\ tarjan(v, edge_id), low[u] = std::min(low[u], low[v]);\n else if (in_stack[v])\n\
32+
\ low[u] = std::min(low[u], dfn[v]);\n }\n\n if (dfn[u] == low[u])\
33+
\ {\n eccs.emplace_back();\n eccs.back().push_back(u);\n in_stack[u]\
34+
\ = false;\n while (stk.top() != u)\n eccs.back().push_back(stk.top()),\
3435
\ in_stack[stk.top()] = false, stk.pop();\n stk.pop();\n }\n }\n\n void\
3536
\ solve() {\n for (size_t i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n\
36-
\ tarjan(i, 0);\n }\n};\n} // namespace weilycoder\n\n\n#line 4 \"test/two_edge_connected_components.test.cpp\"\
37+
\ tarjan(i, 0);\n }\n};\n\ntemplate <typename ptr_t = size_t> struct StrongConnectedComponents\
38+
\ {\n ptr_t dfs_time = 0;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
39+
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<ptr_t>> graph;\n\
40+
\n std::vector<std::vector<ptr_t>> sccs;\n\n StrongConnectedComponents(ptr_t\
41+
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
42+
\ add_edge(ptr_t u, ptr_t v) { graph[u].push_back(v); }\n\n void tarjan(ptr_t\
43+
\ u) {\n dfn[u] = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] =\
44+
\ true;\n\n for (const auto &v : graph[u]) {\n if (!dfn[v])\n tarjan(v),\
45+
\ low[u] = std::min(low[u], low[v]);\n else if (in_stack[v])\n low[u]\
46+
\ = std::min(low[u], dfn[v]);\n }\n\n if (dfn[u] == low[u]) {\n sccs.emplace_back();\n\
47+
\ sccs.back().push_back(u);\n in_stack[u] = false;\n while (stk.top()\
48+
\ != u)\n sccs.back().push_back(stk.top()), in_stack[stk.top()] = false,\
49+
\ stk.pop();\n stk.pop();\n }\n }\n\n void solve() {\n for (size_t\
50+
\ i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n tarjan(i);\n std::reverse(sccs.begin(),\
51+
\ sccs.end());\n }\n};\n} // namespace weilycoder\n\n\n#line 4 \"test/two_edge_connected_components.test.cpp\"\
3752
\n#include <iostream>\nusing namespace std;\nusing namespace weilycoder;\n\nint\
3853
\ main() {\n cin.tie(nullptr)->sync_with_stdio(false);\n cin.exceptions(cin.failbit\
3954
\ | cin.badbit);\n size_t n, m;\n cin >> n >> m;\n\n TwoEdgeConnectedComponents\
@@ -56,7 +71,7 @@ data:
5671
isVerificationFile: true
5772
path: test/two_edge_connected_components.test.cpp
5873
requiredBy: []
59-
timestamp: '2025-10-28 20:19:29+08:00'
74+
timestamp: '2025-10-28 21:05:17+08:00'
6075
verificationStatus: TEST_ACCEPTED
6176
verifiedWith: []
6277
documentation_of: test/two_edge_connected_components.test.cpp

test/unionfind.test.cpp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ data:
4444
isVerificationFile: true
4545
path: test/unionfind.test.cpp
4646
requiredBy: []
47-
timestamp: '2025-10-28 20:19:29+08:00'
47+
timestamp: '2025-10-28 21:05:17+08:00'
4848
verificationStatus: TEST_ACCEPTED
4949
verifiedWith: []
5050
documentation_of: test/unionfind.test.cpp

weilycoder/graph/tarjan.hpp.md

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ data:
33
_extendedDependsOn: []
44
_extendedRequiredBy: []
55
_extendedVerifiedWith:
6+
- icon: ':heavy_check_mark:'
7+
path: test/strongly_connected_components.test.cpp
8+
title: test/strongly_connected_components.test.cpp
69
- icon: ':heavy_check_mark:'
710
path: test/two_edge_connected_components.test.cpp
811
title: test/two_edge_connected_components.test.cpp
@@ -11,11 +14,11 @@ data:
1114
_verificationStatusIcon: ':heavy_check_mark:'
1215
attributes:
1316
links: []
14-
bundledCode: "#line 1 \"weilycoder/graph/tarjan.hpp\"\n\n\n\n#include <cstddef>\n\
15-
#include <stack>\n#include <utility>\n#include <vector>\n\nnamespace weilycoder\
16-
\ {\ntemplate <typename ptr_t = size_t> struct TwoEdgeConnectedComponents {\n\
17-
\ ptr_t dfs_time = 0, edge_time = 1;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
18-
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<std::pair<ptr_t,\
17+
bundledCode: "#line 1 \"weilycoder/graph/tarjan.hpp\"\n\n\n\n#include <algorithm>\n\
18+
#include <cstddef>\n#include <stack>\n#include <utility>\n#include <vector>\n\n\
19+
namespace weilycoder {\ntemplate <typename ptr_t = size_t> struct TwoEdgeConnectedComponents\
20+
\ {\n ptr_t dfs_time = 0, edge_time = 1;\n\n std::vector<bool> in_stack;\n \
21+
\ std::stack<ptr_t> stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<std::pair<ptr_t,\
1922
\ ptr_t>>> graph;\n\n std::vector<std::vector<ptr_t>> eccs;\n\n TwoEdgeConnectedComponents(ptr_t\
2023
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
2124
\ add_edge(ptr_t u, ptr_t v) {\n graph[u].emplace_back(v, edge_time);\n \
@@ -29,12 +32,26 @@ data:
2932
\ = false;\n while (stk.top() != u)\n eccs.back().push_back(stk.top()),\
3033
\ in_stack[stk.top()] = false, stk.pop();\n stk.pop();\n }\n }\n\n void\
3134
\ solve() {\n for (size_t i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n\
32-
\ tarjan(i, 0);\n }\n};\n} // namespace weilycoder\n\n\n"
35+
\ tarjan(i, 0);\n }\n};\n\ntemplate <typename ptr_t = size_t> struct StrongConnectedComponents\
36+
\ {\n ptr_t dfs_time = 0;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
37+
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<ptr_t>> graph;\n\
38+
\n std::vector<std::vector<ptr_t>> sccs;\n\n StrongConnectedComponents(ptr_t\
39+
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
40+
\ add_edge(ptr_t u, ptr_t v) { graph[u].push_back(v); }\n\n void tarjan(ptr_t\
41+
\ u) {\n dfn[u] = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] =\
42+
\ true;\n\n for (const auto &v : graph[u]) {\n if (!dfn[v])\n tarjan(v),\
43+
\ low[u] = std::min(low[u], low[v]);\n else if (in_stack[v])\n low[u]\
44+
\ = std::min(low[u], dfn[v]);\n }\n\n if (dfn[u] == low[u]) {\n sccs.emplace_back();\n\
45+
\ sccs.back().push_back(u);\n in_stack[u] = false;\n while (stk.top()\
46+
\ != u)\n sccs.back().push_back(stk.top()), in_stack[stk.top()] = false,\
47+
\ stk.pop();\n stk.pop();\n }\n }\n\n void solve() {\n for (size_t\
48+
\ i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n tarjan(i);\n std::reverse(sccs.begin(),\
49+
\ sccs.end());\n }\n};\n} // namespace weilycoder\n\n\n"
3350
code: "#ifndef WEILYCODER_TARJAN_HPP\n#define WEILYCODER_TARJAN_HPP\n\n#include\
34-
\ <cstddef>\n#include <stack>\n#include <utility>\n#include <vector>\n\nnamespace\
35-
\ weilycoder {\ntemplate <typename ptr_t = size_t> struct TwoEdgeConnectedComponents\
36-
\ {\n ptr_t dfs_time = 0, edge_time = 1;\n\n std::vector<bool> in_stack;\n \
37-
\ std::stack<ptr_t> stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<std::pair<ptr_t,\
51+
\ <algorithm>\n#include <cstddef>\n#include <stack>\n#include <utility>\n#include\
52+
\ <vector>\n\nnamespace weilycoder {\ntemplate <typename ptr_t = size_t> struct\
53+
\ TwoEdgeConnectedComponents {\n ptr_t dfs_time = 0, edge_time = 1;\n\n std::vector<bool>\
54+
\ in_stack;\n std::stack<ptr_t> stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<std::pair<ptr_t,\
3855
\ ptr_t>>> graph;\n\n std::vector<std::vector<ptr_t>> eccs;\n\n TwoEdgeConnectedComponents(ptr_t\
3956
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
4057
\ add_edge(ptr_t u, ptr_t v) {\n graph[u].emplace_back(v, edge_time);\n \
@@ -48,15 +65,30 @@ data:
4865
\ = false;\n while (stk.top() != u)\n eccs.back().push_back(stk.top()),\
4966
\ in_stack[stk.top()] = false, stk.pop();\n stk.pop();\n }\n }\n\n void\
5067
\ solve() {\n for (size_t i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n\
51-
\ tarjan(i, 0);\n }\n};\n} // namespace weilycoder\n\n#endif\n"
68+
\ tarjan(i, 0);\n }\n};\n\ntemplate <typename ptr_t = size_t> struct StrongConnectedComponents\
69+
\ {\n ptr_t dfs_time = 0;\n\n std::vector<bool> in_stack;\n std::stack<ptr_t>\
70+
\ stk;\n std::vector<ptr_t> dfn, low;\n std::vector<std::vector<ptr_t>> graph;\n\
71+
\n std::vector<std::vector<ptr_t>> sccs;\n\n StrongConnectedComponents(ptr_t\
72+
\ n)\n : in_stack(n, false), dfn(n, 0), low(n, 0), graph(n) {}\n\n void\
73+
\ add_edge(ptr_t u, ptr_t v) { graph[u].push_back(v); }\n\n void tarjan(ptr_t\
74+
\ u) {\n dfn[u] = low[u] = ++dfs_time;\n stk.push(u);\n in_stack[u] =\
75+
\ true;\n\n for (const auto &v : graph[u]) {\n if (!dfn[v])\n tarjan(v),\
76+
\ low[u] = std::min(low[u], low[v]);\n else if (in_stack[v])\n low[u]\
77+
\ = std::min(low[u], dfn[v]);\n }\n\n if (dfn[u] == low[u]) {\n sccs.emplace_back();\n\
78+
\ sccs.back().push_back(u);\n in_stack[u] = false;\n while (stk.top()\
79+
\ != u)\n sccs.back().push_back(stk.top()), in_stack[stk.top()] = false,\
80+
\ stk.pop();\n stk.pop();\n }\n }\n\n void solve() {\n for (size_t\
81+
\ i = 0; i < graph.size(); ++i)\n if (!dfn[i])\n tarjan(i);\n std::reverse(sccs.begin(),\
82+
\ sccs.end());\n }\n};\n} // namespace weilycoder\n\n#endif\n"
5283
dependsOn: []
5384
isVerificationFile: false
5485
path: weilycoder/graph/tarjan.hpp
5586
requiredBy: []
56-
timestamp: '2025-10-28 20:19:29+08:00'
87+
timestamp: '2025-10-28 21:05:17+08:00'
5788
verificationStatus: LIBRARY_ALL_AC
5889
verifiedWith:
5990
- test/two_edge_connected_components.test.cpp
91+
- test/strongly_connected_components.test.cpp
6092
documentation_of: weilycoder/graph/tarjan.hpp
6193
layout: document
6294
redirect_from:

weilycoder/unionfind.hpp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ data:
3535
isVerificationFile: false
3636
path: weilycoder/unionfind.hpp
3737
requiredBy: []
38-
timestamp: '2025-10-28 20:19:29+08:00'
38+
timestamp: '2025-10-28 21:05:17+08:00'
3939
verificationStatus: LIBRARY_ALL_AC
4040
verifiedWith:
4141
- test/unionfind.test.cpp

0 commit comments

Comments
 (0)