From 752d3426d57bb569215d760b305716257176ca4d Mon Sep 17 00:00:00 2001 From: coffeesigma Date: Sun, 4 May 2025 20:17:49 +0900 Subject: [PATCH] =?UTF-8?q?[Baekjoon-2606]=20=EB=B0=94=EC=9D=B4=EB=9F=AC?= =?UTF-8?q?=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\235\264\353\237\254\354\212\244.java" | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 "BOJ/jeongbeen/13_week/\353\260\224\354\235\264\353\237\254\354\212\244.java" diff --git "a/BOJ/jeongbeen/13_week/\353\260\224\354\235\264\353\237\254\354\212\244.java" "b/BOJ/jeongbeen/13_week/\353\260\224\354\235\264\353\237\254\354\212\244.java" new file mode 100644 index 0000000..86c7828 --- /dev/null +++ "b/BOJ/jeongbeen/13_week/\353\260\224\354\235\264\353\237\254\354\212\244.java" @@ -0,0 +1,46 @@ +import java.io.*; +import java.util.*; + +public class 바이러스2 { + public static int[] parent; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + int N = Integer.parseInt(br.readLine()); + parent = new int[N]; + for (int i = 0; i < N; i++) { + parent[i] = i; + } + int M = Integer.parseInt(br.readLine()); + for (int i = 0; i < M; i++) { + String[] s = br.readLine().split(" "); + int node1 = Integer.parseInt(s[0]) - 1; + int node2 = Integer.parseInt(s[1]) - 1; + union(node1, node2); + } + int answer = 0; + for (int i = 0; i < N; i++) { + if (getParent(i) == 0) answer++; + } + bw.write((answer - 1) + "\n"); + bw.flush(); + } + + public static int getParent(int node) { + while (node != parent[node]) { + node = parent[node]; + } + return node; + } + + public static void union(int node1, int node2) { + int p1 = getParent(node1); + int p2 = getParent(node2); + + if (p1 == p2) return; + if (p1 < p2) parent[p2] = p1; + else parent[p1] = p2; + } +}