Boj 1717 집합의 표현
Updated:
문제 링크 : 백준 https://www.acmicpc.net/problem/1717
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Boj_1717 {
static int[] parent;
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st ;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception{
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=0;i<=n;i++) {
parent[i]=i;
}
while(m-- > 0) {
st = new StringTokenizer(br.readLine());
int type = Integer.parseInt(st.nextToken());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
if(type==0)
union(a,b);
else
sb.append(isSameParent(a, b) ? "YES\n" : "NO\n");
}
System.out.println(sb);
}
static void union(int x, int y) {
x = find(x);
y = find(y);
if(x!=y) {
if(x < y) parent[y] = x;
else parent[x] = y;
}
}
static int find(int x) {
if(x == parent[x])
return x;
else
return parent[x] = find(parent[x]);
}
static boolean isSameParent(int x, int y) {
x = find(x);
y = find(y);
if(x == y)
return true;
else
return false;
}
}
Leave a comment