반응형
public class Q_1717 {
static int getParent(int[] parent, int x) {
if(parent[x] == x) return x;
else return parent[x] = getParent(parent, parent[x]);
}
static void union(int[] parent, int x, int y) {
int node1 = getParent(parent, x);
int node2 = getParent(parent, y);
if(node1 < node2) parent[node2] = node1;
else parent[node1] = node2;
}
static String compare(int[] parent, int x, int y) {
int node1 = getParent(parent, x);
int node2 = getParent(parent, y);
if(node1 == node2) return "YES";
else return "NO";
}
public static void main(String[] args) throws IOException {
int[] parent;
String[] operArr;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] cmd1 = br.readLine().split(" ");
int nodeCount = Integer.parseInt(cmd1[0]);
int operCount = Integer.parseInt(cmd1[1]);
parent = new int[nodeCount+1];
operArr = new String[operCount];
//노드 초기화
for (int i = 1; i < nodeCount+1; i++) {
parent[i] = i;
}
//연산 입력
for (int i = 0; i < operCount; i++) {
operArr[i] = br.readLine();
}
for (int i = 0; i < operArr.length; i++) {
String[] oper = operArr[i].split(" ");
//명령어 분기
switch (oper[0]) {
case "0":
union(parent, Integer.parseInt(oper[1]), Integer.parseInt(oper[2]));
break;
case "1":
System.out.println(compare(parent, Integer.parseInt(oper[1]), Integer.parseInt(oper[2])));
break;
default:
break;
}
}
}
}
URL : https://www.acmicpc.net/problem/1717
반응형
'Algorithm > 백준 문제풀이' 카테고리의 다른 글
백준 10828 - 스택(자바 구현) (0) | 2021.06.14 |
---|---|
백준 1922 - 네트워크 연결(자바 구현) (0) | 2021.05.20 |
백준 1260 - DFS와 BFS(자바 구현) (0) | 2021.05.11 |
백준 2751 - 수 정렬하기 2(자바 구현) (0) | 2021.05.10 |
백준 2750 - 수 정렬하기(자바 구현) (0) | 2021.05.09 |