abc328_f
Good Set Query の解説
解説 by @ohnuma
解説
重み付きunionfindを用意するだけ。
https://github.com/k-ohnuma/k-ohnuma-procon-lib/blob/main/src/data_structure/potential_union_find.rs
fn main() { input! { n: usize, q: usize, abd: [(Usize1, Usize1, isize); q] } let mut uf = PotentialUnionFind::new(n); let mut ans = vec![]; for (idx, &(a, b, d)) in abd.iter().enumerate() { if !uf.same(a, b) { uf.merge(a, b, d); ans.push(idx + 1); continue; } let diff = uf.diff(a, b); if diff != d { continue; } ans.push(idx + 1); } println!("{}", ans.iter().join(" ")); }