use proconio::input; use ac_library::Dsu; fn main(){ input!{ n: usize, m: usize, e: [(usize, usize); m], } let mut uf = Dsu::new(n); let mut i = vec![0_i32; n]; let mut o = vec![0_i32; n]; for (u, v) in e{ uf.merge(u-1, v-1); i[v-1] += 1; o[u-1] += 1; } let h = uf.groups(); let mut ans = -1; for a in h{ let mut ok = 0; let mut tm = 0; for x in a{ if i[x] > 0{ ok = 1; } tm += (o[x]-i[x]).abs(); } ans += (tm/2-1).max(0)+ok; } println!("{}", ans); }