https://www.acmicpc.net/problem/1717
1717번: 집합의 표현
초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작
www.acmicpc.net
Java 코드
import java.util.Scanner;
public class Main {
static int[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int n = sc.nextInt();
int m = sc.nextInt();
arr = new int[n + 1];
for(int i = 1; i <= n; i++) arr[i] = i;
for(int i = 0; i < m; i++) {
int num = sc.nextInt();
int a = sc.nextInt();
int b = sc.nextInt();
if(num == 0) union(a, b);
else {
if(find(a) == find(b)) sb.append("YES"+"\n");
else sb.append("NO"+"\n");
}
}
System.out.println(sb);
}
public static void union(int a, int b) {
a = find(a);
b = find(b);
if(a != b) arr[b] = a;
}
public static int find(int a) {
if(a == arr[a]) return a;
else return arr[a] = find(arr[a]);
}
}
'백준' 카테고리의 다른 글
백준 2225 합분해(Java) (0) | 2023.02.27 |
---|---|
백준 2294 동전 2(Java) (0) | 2023.02.27 |
백준 2467 용액(Java) (0) | 2023.02.27 |
백준 5430 AC(Java) (0) | 2023.02.27 |
백준 14503 로봇 청소기(Java) (0) | 2023.02.27 |