Skip to content

Commit b60cf61

Browse files
committed
fix+golf
1 parent a990dd1 commit b60cf61

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

library/dsu/dsu_bipartite.hpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ struct dsu_bipartite {
88
int f(int v) {
99
if (p[v] < 0) return v;
1010
int root = f(p[v]);
11-
parity[v] ^= parity[p[v]];
12-
return p[v] = root;
11+
return parity[v] ^= parity[p[v]], p[v] = root;
1312
}
13+
int size(int v) { return -p[f(v)]; }
14+
bool is_bipartite(int v) { return is_bi[f(v)]; }
1415
bool join(int u, int v) {
1516
int root_u = f(u), root_v = f(v);
16-
int new_parity = parity[v] ^ parity[u];
17-
u = root_u, v = root_v;
18-
if (u == v) {
17+
int new_parity = parity[u] ^ parity[v];
18+
if ((u = root_u) == (v = root_v)) {
1919
is_bi[u] &= new_parity;
2020
return 0;
2121
}
@@ -25,6 +25,4 @@ struct dsu_bipartite {
2525
p[u] += p[v], p[v] = u;
2626
return 1;
2727
}
28-
int size(int v) { return -p[f(v)]; }
29-
bool is_bipartite(int v) { return is_bi[f(v)]; }
3028
};

library/dsu/dsu_weighted.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ struct dsu_weighted {
2222
return f(u) == f(v) ? d[v] - d[u] : 1e18;
2323
}
2424
bool join(int u, int v, ll w) {
25+
int root_u = f(u), root_v = f(v);
2526
w += d[u] - d[v];
26-
if ((u = f(u)) == (v = f(v))) return 0;
27+
if ((u = root_u) == (v = root_v)) return 0;
2728
if (p[u] > p[v]) swap(u, v), w = -w;
2829
return p[u] += p[v], p[v] = u, d[v] = w, 1;
2930
}

0 commit comments

Comments
 (0)