import ac_library.DSU import java.io.BufferedInputStream import java.io.StreamTokenizer fun main() { val st = StreamTokenizer(BufferedInputStream(System.`in`)) fun ni(): Int { st.nextToken() return st.nval.toInt() } val n = ni() val m = ni() val d = DSU(n) repeat(m) { val u = ni() val v = ni() d.merge(u, v) } var c = 0 for (i in 0 until n) if (d.leader(i) == i) c++ println(c) }