37 last_repaired_vertices_ = 0;
41 const auto canonical = canonicalize(batch);
42 std::unordered_set<VertexId> affected_roots;
43 affected_roots.reserve(canonical.updates.size() * 2 + 1);
47 for (
const auto& e : canonical.updates) {
48 if (!e.add && e.src < parent_.size() && e.dst < parent_.size() &&
50 affected_roots.insert(find(e.src));
51 affected_roots.insert(find(e.dst));
55 std::vector<std::uint8_t> affected(parent_.size(), 0);
56 last_repaired_vertices_ = 0;
57 if (!affected_roots.empty()) {
58 for (
VertexId v = 0; v < parent_.size(); ++v) {
59 if (affected_roots.contains(find(v))) {
61 ++last_repaired_vertices_;
68 affected.resize(parent_.size(), 0);
70 if (!affected_roots.empty()) {
71 for (
VertexId v = 0; v < affected.size(); ++v) {
81 for (
VertexId u = 0; u < affected.size(); ++u) {
82 if (!affected[u])
continue;
84 if (v < affected.size() && affected[v]) unite(u, v);
91 for (
const auto& e : canonical.updates) {
92 if (e.add && e.src < parent_.size() && e.dst < parent_.size() &&