toggle_edge receives weight w also in edge deletion.
void toggle_edge(int u, int v, A w)
If user set w as a dummy value or a garbage value it occurs a logical flaw.
for (auto i = 0; i < E; ++i) {
auto [u, v, l, w] = edges_[i];
auto r = k;
if (i + 1 < E && u == std::get<0>(edges_[i + 1]) && v == std::get<1>(edges_[i + 1])) {
r = std::get<2>(edges_[++i]);
}
l += k;
r += k;
while (l < r) {
if (l & 1) {
segment[l++].emplace_back(i);
}
if (r & 1) {
segment[--r].emplace_back(i);
}
l >>= 1;
r >>= 1;
}
}
Because if there was an edge removal, i points to the removal event not the insertion event.
toggle_edgereceives weightwalso in edge deletion.If user set
was a dummy value or a garbage value it occurs a logical flaw.Because if there was an edge removal,
ipoints to the removal event not the insertion event.