Algorithm/백준 문제풀이
백준 1717 - 집합의 표현(자바 구현)
leedg36
2021. 5. 13. 23:43
반응형
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
반응형