백준_1717 집합의 표현 (유니온파인드)Algorithm/Algorithm 문제2024. 2. 16. 12:06
Table of Contents
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_1717_집합의표현 {
static int[] parent;
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());
parent = new int[n+1];
for (int i=1; i<n+1; i++) {
parent[i] = i;
}
int k, a, b;
StringBuilder sb = new StringBuilder();
for (int i=0; i<m; i++) {
st = new StringTokenizer(br.readLine(), " ");
k = Integer.parseInt(st.nextToken());
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
if (k==0) {
union(a, b);
} else {
if (find(a) == find(b)) {
sb.append("YES\n");
} else {
sb.append("NO\n");
}
}
}
System.out.println(sb);
}
static int find(int a) {
if (parent[a] == a) {
return a;
} else {
int temp = find(parent[a]); //find 연산의 경로 압축
parent[a] = temp;
return temp;
}
}
static void union(int a, int b) {
a = find(a);
b = find(b);
if (a!=b) {
parent[b] = a;
}
}
}
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_1043 거짓말 (유니온파인드) (0) | 2024.02.18 |
---|---|
백준_1976 여행 가자 (유니온파인드) (0) | 2024.02.17 |
백준_2251 물통 (BFS) (0) | 2024.02.15 |
백준_1707 이분 그래프 (DFS) (0) | 2024.02.14 |
백준_1325 효율적인 해킹 (BFS) (0) | 2024.02.13 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!