0. 문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
1. 문제 이해
- 서로소 집합
2. 제출
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA3289 {
static int N, M;
static int[] p;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuffer sb = new StringBuffer();
int T = Integer.parseInt(st.nextToken());
for(int tc=1; tc<=T; tc++) {
sb.append("#").append(tc).append(" ");
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
p = new int[N+1];
make();
int oper, x, y;
for(int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine());
oper = Integer.parseInt(st.nextToken());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
if(oper == 0) {
union(x, y);
}else{
sb.append(check(x,y));
}
}
sb.append("\\n");
}
System.out.println(sb);
br.close();
}
private static void make() {
for(int i=1; i<=N; i++) {
p[i] = i;
}
}
private static int find(int x) {
return (x == p[x]) ? x : (p[x] = find(p[x]));
}
private static int check(int x, int y) {
if(x == y) return 1;
int xRoot = find(x);
int yRoot = find(y);
if(xRoot == yRoot) return 1;
return 0;
}
private static void union(int x, int y) {
if(check(x, y)==1) return;
int xRoot = find(x);
int yRoot = find(y);
p[yRoot] = xRoot;
return;
}
}
Code language: JavaScript (javascript)