This documentation is automatically generated by online-judge-tools/verification-helper
#define PROBLEM "https://judge.yosupo.jp/problem/persistent_unionfind"
#include <iostream>
#include "datastructure/UndoUnionFind.hpp"
int main() {
std::cin.tie(0);
std::ios::sync_with_stdio(false);
int N, Q;
std::cin >> N >> Q;
std::vector<int> t(Q), u(Q), v(Q);
std::vector<std::vector<int>> G(Q + 1);
for (int i = 0; i < Q; i++) {
int k;
std::cin >> t[i] >> k >> u[i] >> v[i];
G[++k].emplace_back(i + 1);
}
UndoUnionFind UF(N);
std::vector<int> ans(Q, -1);
auto dfs = [&](auto self, int cur) -> void {
if (cur) {
if (!t[cur - 1])
UF.merge(u[cur - 1], v[cur - 1]);
else
ans[cur - 1] = UF.same(u[cur - 1], v[cur - 1]);
}
for (int nxt : G[cur]) self(self, nxt);
if (cur && !t[cur - 1]) UF.undo();
};
dfs(dfs, 0);
for (int i = 0; i < Q; i++) {
if (~ans[i]) {
std::cout << ans[i] << '\n';
}
}
return 0;
}Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.13.3/x64/lib/python3.13/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.13.3/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
bundler.update(path)
~~~~~~~~~~~~~~^^^^^^
File "/opt/hostedtoolcache/Python/3.13.3/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
self.update(self._resolve(pathlib.Path(included), included_from=path))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.13.3/x64/lib/python3.13/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 260, in _resolve
raise BundleErrorAt(path, -1, "no such header")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: datastructure/UndoUnionFind.hpp: line -1: no such header