Skip to content

Commit 191bff3

Browse files
committed
swap u and v
1 parent 817bfa9 commit 191bff3

File tree

12 files changed

+121
-121
lines changed

12 files changed

+121
-121
lines changed

src/data_structures/binary_trie.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ impl BinaryTrie {
8484
/// # Complexity
8585
/// - Time: O(log(max_num))
8686
/// - Space: O(1)
87-
pub fn min_xor(&self, num: T) -> T {
87+
pub fn walk(&self, num: T) -> T {
8888
assert!(self.t[0].sub_sz > 0);
8989
let mut v = 0;
9090
let mut ans = 0;

src/graphs/block_vertex_tree.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@
2323
/// // indexes 0..n are nodes
2424
/// // indexes n..n + num_bccs are bccs
2525
///
26-
/// for u in 0..n {
27-
/// // loop over each unique bcc containing a node u
28-
/// for bccid in bvt[u].iter().map(|v| v - n) {
26+
/// for v in 0..n {
27+
/// // loop over each unique bcc containing a node v
28+
/// for bccid in bvt[v].iter().map(|u| u - n) {
2929
/// assert!(0 <= bccid && bccid < num_bccs);
3030
/// }
3131
/// }
3232
/// for bccid in 0..num_bccs {
3333
/// // loop over each unique node inside a bcc
34-
/// for &u in bvt[bccid + n].iter() {
35-
/// assert!(0 <= u && u < n);
34+
/// for &v in bvt[bccid + n].iter() {
35+
/// assert!(0 <= v && v < n);
3636
/// }
3737
/// }
3838
/// ```

src/graphs/bridges.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! # Bridge Edges
22
33
/// # Guarantees
4-
/// - 0 <= two_edge_ccid\[u\] < num_2_edge_ccs
4+
/// - 0 <= two_edge_ccid\[v\] < num_2_edge_ccs
55
///
66
/// # Example
77
/// ```
@@ -41,21 +41,21 @@ pub fn get_bridges(adj: &[Vec<(usize, usize)>], m: usize) -> (usize, Vec<bool>,
4141
two_edge_ccid: vec![0; n],
4242
st: Vec::with_capacity(n),
4343
};
44-
fn dfs(e: &mut Env, u: usize, p_id: Option<usize>, adj: &[Vec<(usize, usize)>]) -> usize {
45-
e.tin[u] = e.timer;
44+
fn dfs(e: &mut Env, v: usize, p_id: Option<usize>, adj: &[Vec<(usize, usize)>]) -> usize {
45+
e.tin[v] = e.timer;
4646
let (mut low, st_sz) = (e.timer, e.st.len());
4747
e.timer += 1;
48-
e.st.push(u);
49-
for &(v, e_id) in &adj[u] {
48+
e.st.push(v);
49+
for &(u, e_id) in &adj[v] {
5050
if Some(e_id) == p_id {
5151
continue;
5252
}
53-
if e.tin[v] == 0 {
54-
low = low.min(dfs(e, v, Some(e_id), adj));
53+
if e.tin[u] == 0 {
54+
low = low.min(dfs(e, u, Some(e_id), adj));
5555
}
56-
low = low.min(e.tin[v]);
56+
low = low.min(e.tin[u]);
5757
}
58-
if e.tin[u] == low {
58+
if e.tin[v] == low {
5959
if let Some(p) = p_id {
6060
e.is_bridge[p] = true;
6161
}

src/graphs/cent_decomp.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
//! # Centroid Decomposition
22
3-
fn calc_sz(adj: &[Vec<usize>], u: usize, p: usize, sub_sz: &mut [usize]) {
4-
sub_sz[u] = 1;
5-
for &v in adj[u].iter() {
6-
if v != p {
7-
calc_sz(adj, v, u, sub_sz);
8-
sub_sz[u] += sub_sz[v];
3+
fn calc_sz(adj: &[Vec<usize>], v: usize, p: usize, sub_sz: &mut [usize]) {
4+
sub_sz[v] = 1;
5+
for &u in adj[v].iter() {
6+
if u != p {
7+
calc_sz(adj, u, v, sub_sz);
8+
sub_sz[v] += sub_sz[u];
99
}
1010
}
1111
}
1212

1313
fn dfs(
1414
adj: &mut [Vec<usize>],
15-
mut u: usize,
15+
mut v: usize,
1616
sub_sz: &mut [usize],
1717
call_dfs: &mut dyn CentDecompDfs,
1818
) {
19-
calc_sz(adj, u, u, sub_sz);
20-
let sz_root = sub_sz[u];
21-
let mut p = u;
19+
calc_sz(adj, v, v, sub_sz);
20+
let sz_root = sub_sz[v];
21+
let mut p = v;
2222
loop {
23-
let big_ch = adj[u]
23+
let big_ch = adj[v]
2424
.iter()
25-
.filter(|&&v| v != p)
26-
.find(|&&v| sub_sz[v] * 2 > sz_root);
27-
if let Some(&v) = big_ch {
28-
p = u;
29-
u = v;
25+
.filter(|&&u| u != p)
26+
.find(|&&u| sub_sz[u] * 2 > sz_root);
27+
if let Some(&u) = big_ch {
28+
p = v;
29+
v = u;
3030
} else {
3131
break;
3232
}
3333
}
34-
call_dfs.dfs(adj, u);
35-
for v in adj[u].clone() {
36-
adj[v].retain(|&x| x != u);
37-
dfs(adj, v, sub_sz, call_dfs);
34+
call_dfs.dfs(adj, v);
35+
for u in adj[v].clone() {
36+
adj[u].retain(|&x| x != v);
37+
dfs(adj, u, sub_sz, call_dfs);
3838
}
3939
}
4040

src/graphs/cuts.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,21 @@ pub fn get_cuts(adj: &[Vec<(usize, usize)>], m: usize) -> (usize, Vec<bool>, Vec
4949
bcc_id: vec![0; m],
5050
st: Vec::with_capacity(m),
5151
};
52-
fn dfs(e: &mut Env, u: usize, p_id: Option<usize>, adj: &[Vec<(usize, usize)>]) -> usize {
53-
e.tin[u] = e.timer;
52+
fn dfs(e: &mut Env, v: usize, p_id: Option<usize>, adj: &[Vec<(usize, usize)>]) -> usize {
53+
e.tin[v] = e.timer;
5454
let (mut low, mut deg) = (e.timer, 0);
5555
e.timer += 1;
56-
for &(v, e_id) in &adj[u] {
57-
assert_ne!(u, v);
56+
for &(u, e_id) in &adj[v] {
57+
assert_ne!(v, u);
5858
if Some(e_id) == p_id {
5959
continue;
6060
}
61-
if e.tin[v] == 0 {
61+
if e.tin[u] == 0 {
6262
let st_sz = e.st.len();
6363
e.st.push(e_id);
64-
let low_ch = dfs(e, v, Some(e_id), adj);
65-
if low_ch >= e.tin[u] {
66-
e.is_cut[u] = true;
64+
let low_ch = dfs(e, u, Some(e_id), adj);
65+
if low_ch >= e.tin[v] {
66+
e.is_cut[v] = true;
6767
for &id in e.st.iter().skip(st_sz) {
6868
e.bcc_id[id] = e.num_bccs;
6969
}
@@ -72,13 +72,13 @@ pub fn get_cuts(adj: &[Vec<(usize, usize)>], m: usize) -> (usize, Vec<bool>, Vec
7272
}
7373
low = low.min(low_ch);
7474
deg += 1;
75-
} else if e.tin[v] < e.tin[u] {
75+
} else if e.tin[u] < e.tin[v] {
7676
e.st.push(e_id);
77-
low = low.min(e.tin[v]);
77+
low = low.min(e.tin[u]);
7878
}
7979
}
8080
if p_id.is_none() {
81-
e.is_cut[u] = deg > 1;
81+
e.is_cut[v] = deg > 1;
8282
}
8383
low
8484
}

src/graphs/dfs_order.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
fn dfs_preorder(u: usize, adj: &[Vec<usize>], seen: &mut [bool], order: &mut Vec<usize>) {
2-
order.push(u);
3-
seen[u] = true;
4-
for &v in &adj[u] {
5-
if !seen[v] {
6-
dfs_preorder(v, adj, seen, order);
1+
fn dfs_preorder(v: usize, adj: &[Vec<usize>], seen: &mut [bool], order: &mut Vec<usize>) {
2+
order.push(v);
3+
seen[v] = true;
4+
for &u in &adj[v] {
5+
if !seen[u] {
6+
dfs_preorder(u, adj, seen, order);
77
}
88
}
99
}
1010

11-
fn dfs_postorder(u: usize, adj: &[Vec<usize>], seen: &mut [bool], order: &mut Vec<usize>) {
12-
seen[u] = true;
13-
for &v in &adj[u] {
14-
if !seen[v] {
15-
dfs_postorder(v, adj, seen, order);
11+
fn dfs_postorder(v: usize, adj: &[Vec<usize>], seen: &mut [bool], order: &mut Vec<usize>) {
12+
seen[v] = true;
13+
for &u in &adj[v] {
14+
if !seen[u] {
15+
dfs_postorder(u, adj, seen, order);
1616
}
1717
}
18-
order.push(u);
18+
order.push(v);
1919
}
2020

2121
fn get_dfs_order<F>(adj: &[Vec<usize>], dfs_order: F) -> Vec<usize>

src/graphs/dijk.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ pub fn dijk(adj: &[Vec<(usize, u64)>], s: usize) -> Vec<u64> {
2424
let mut dist = vec![u64::MAX; n];
2525
let mut q = std::collections::BinaryHeap::new();
2626
q.push(Reverse((0, s)));
27-
while let Some(Reverse((d, u))) = q.pop() {
28-
if dist[u] <= d {
27+
while let Some(Reverse((d, v))) = q.pop() {
28+
if dist[v] <= d {
2929
continue;
3030
}
31-
dist[u] = d;
32-
for &(v, w) in &adj[u] {
33-
q.push(Reverse((dist[u] + w, v)));
31+
dist[v] = d;
32+
for &(u, w) in &adj[v] {
33+
q.push(Reverse((dist[v] + w, u)));
3434
}
3535
}
3636
dist

src/graphs/hld.rs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,27 +55,27 @@ impl HLD {
5555
let n = adj.len();
5656
let mut p = vec![None; n];
5757
let mut siz = vec![0; n];
58-
for &u in get_dfs_postorder(adj).iter() {
59-
adj[u].retain(|&v| siz[v] > 0);
60-
siz[u] = 1;
61-
for i in 0..adj[u].len() {
62-
let v = adj[u][i];
63-
p[v] = Some(u);
64-
siz[u] += siz[v];
65-
if siz[v] > siz[adj[u][0]] {
66-
adj[u].swap(0, i);
58+
for &v in get_dfs_postorder(adj).iter() {
59+
adj[v].retain(|&u| siz[u] > 0);
60+
siz[v] = 1;
61+
for i in 0..adj[v].len() {
62+
let u = adj[v][i];
63+
p[u] = Some(v);
64+
siz[v] += siz[u];
65+
if siz[u] > siz[adj[v][0]] {
66+
adj[v].swap(0, i);
6767
}
6868
}
6969
}
7070
let mut tin = vec![0; n];
7171
let mut head = vec![0; n];
7272
let mut d = vec![0; n];
7373
let ord = get_dfs_preorder(adj);
74-
for (i, &u) in ord.iter().enumerate() {
75-
tin[u] = i;
76-
for &v in &adj[u] {
77-
d[v] = 1 + d[u];
78-
head[v] = if v == adj[u][0] { head[u] } else { v };
74+
for (i, &v) in ord.iter().enumerate() {
75+
tin[v] = i;
76+
for &u in &adj[v] {
77+
d[u] = 1 + d[v];
78+
head[u] = if u == adj[v][0] { head[v] } else { u };
7979
}
8080
}
8181
HLD {
@@ -113,13 +113,13 @@ impl HLD {
113113
);
114114
}
115115

116-
/// Gets range representing the subtree of u
116+
/// Gets range representing the subtree of v
117117
///
118118
/// # Complexity
119119
/// - Time: O(1)
120120
/// - Space: O(1)
121-
pub fn sub_tree(&self, u: usize) -> Range<usize> {
122-
self.tin[u] + self.vals_edges as usize..self.tin[u] + self.siz[u]
121+
pub fn sub_tree(&self, v: usize) -> Range<usize> {
122+
self.tin[v] + self.vals_edges as usize..self.tin[v] + self.siz[v]
123123
}
124124

125125
/// Gets the lowest common ancestor of u and v
@@ -171,14 +171,14 @@ impl HLD {
171171
/// # Complexity
172172
/// - Time: O(log n)
173173
/// - Space: O(1)
174-
pub fn kth_par(&self, mut u: usize, mut k: usize) -> Option<usize> {
174+
pub fn kth_par(&self, mut v: usize, mut k: usize) -> Option<usize> {
175175
loop {
176-
let len_path = self.tin[u] - self.tin[self.head[u]];
176+
let len_path = self.tin[v] - self.tin[self.head[v]];
177177
if k <= len_path {
178-
return Some(self.ord[self.tin[u] - k]);
178+
return Some(self.ord[self.tin[v] - k]);
179179
}
180-
match self.p[self.head[u]] {
181-
Some(v) => u = v,
180+
match self.p[self.head[v]] {
181+
Some(u) => v = u,
182182
None => return None,
183183
}
184184
k -= len_path + 1;

src/graphs/hopcroft_karp.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ impl HopcroftKarp {
7474
for v in &mut e.mvc_r {
7575
*v = false;
7676
}
77-
while let Some(u) = q.pop_front() {
78-
e.mvc_l[u] = false;
79-
for &v in &adj[u] {
80-
e.mvc_r[v] = true;
81-
if let Some(w) = e.r_to_l[v] {
82-
if dist[w] > 1 + dist[u] {
83-
dist[w] = 1 + dist[u];
77+
while let Some(v) = q.pop_front() {
78+
e.mvc_l[v] = false;
79+
for &u in &adj[v] {
80+
e.mvc_r[u] = true;
81+
if let Some(w) = e.r_to_l[u] {
82+
if dist[w] > 1 + dist[v] {
83+
dist[w] = 1 + dist[v];
8484
q.push_back(w);
8585
}
8686
} else {
@@ -91,17 +91,17 @@ impl HopcroftKarp {
9191
if !found {
9292
return e;
9393
}
94-
fn dfs(u: usize, adj: &[Vec<usize>], dist: &mut [usize], e: &mut HopcroftKarp) -> bool {
95-
for &v in &adj[u] {
96-
let w = e.r_to_l[v];
94+
fn dfs(v: usize, adj: &[Vec<usize>], dist: &mut [usize], e: &mut HopcroftKarp) -> bool {
95+
for &u in &adj[v] {
96+
let w = e.r_to_l[u];
9797
if w.is_none()
98-
|| dist[u] + 1 == dist[w.unwrap()] && dfs(w.unwrap(), adj, dist, e)
98+
|| dist[v] + 1 == dist[w.unwrap()] && dfs(w.unwrap(), adj, dist, e)
9999
{
100-
(e.l_to_r[u], e.r_to_l[v]) = (Some(v), Some(u));
100+
(e.l_to_r[v], e.r_to_l[u]) = (Some(u), Some(v));
101101
return true;
102102
}
103103
}
104-
dist[u] = usize::MAX;
104+
dist[v] = usize::MAX;
105105
false
106106
}
107107
e.matching_siz += (0..lsz)

src/graphs/lca.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,24 +47,24 @@ impl LCA {
4747
let mut p = vec![None; n];
4848
let mut d = vec![0; n];
4949
let order = get_dfs_preorder(adj);
50-
for (i, &u) in order.iter().enumerate() {
51-
tin[u] = i;
52-
for &v in &adj[u] {
53-
if Some(v) != p[u] {
54-
(p[v], d[v]) = (Some(u), d[u] + 1);
50+
for (i, &v) in order.iter().enumerate() {
51+
tin[v] = i;
52+
for &u in &adj[v] {
53+
if Some(u) != p[v] {
54+
(p[u], d[u]) = (Some(v), d[v] + 1);
5555
}
5656
}
5757
}
5858
let mut siz = vec![1; n];
59-
for &u in order.iter().rev() {
60-
if let Some(par) = p[u] {
61-
siz[par] += siz[u];
59+
for &v in order.iter().rev() {
60+
if let Some(par) = p[v] {
61+
siz[par] += siz[v];
6262
}
6363
}
6464
LCA {
6565
p,
6666
rmq: RMQ::new(
67-
&order.iter().map(|&u| (d[u], u)).collect::<Vec<_>>(),
67+
&order.iter().map(|&v| (d[v], v)).collect::<Vec<_>>(),
6868
|&x, &y| if x.0 < y.0 { x } else { y },
6969
),
7070
d,

0 commit comments

Comments
 (0)