/*
* 2025-06-26
* 문제50_백준 1717번
* */
package day8.B1717;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
for(int i = 0; i < m; i++){
st = new StringTokenizer(br.readLine());
int zor = Integer.parseInt(st.nextToken()); //zero or one
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
} // 여기까지 입력받고
// 여기서 zor이 0이면 union 호출, 1이면 find 호출할 예정.
}
/***/
static void union(int[] a, int[]b){
int lenC = a.length + b.length;
int[] c = new int[lenC]; // 새로운 배열
for(int i = 0; i < lenC; i++){
Arrays.copy(c, a);
}
}
/***/
static void find(){
}
}
지금 union 부분은 a 집합과 b 집합을 배열로 만들어 합치겠다.(c 배열) 인데,
본질적으로 틀린 이유가 있다. 3가지 이유
→ 따라서 배열을 복사해서 전체 원소를 관리할 필요가 없다.
왜냐, 이 문제는 아래 두 연산을 반복한다.
1. 합집합 2. 포함 여부
이 두 연산이 반복되는 문제 = union-find pattern이다.
“초기에 {0}, {1}, ..., {n}의 n+1개의 집합이 있다” → 이는 서로소 집합 구조임을 알려준다.