SWEA3289 서로소 집합

·2022년 4월 27일
0

SWEA 알고리즘

목록 보기
24/29

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Solution {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	static StringTokenizer st;
	static int N;
	static int[] parents;
	public static void makeSet() {
		parents = new int [N];
		// 자신의 부모노드를 자신의 값으로 세팅.
		for(int i = 0; i < N; i++) {
			parents[i] = i;
		}
		
	}
	public static int findSet(int a) {
		if(a == parents[a]) return a;
		return parents[a] = findSet(parents[a]);
	}
	public static boolean union(int a, int b) {
		int aRoot = findSet(a);
		int bRoot = findSet(b);
		if(aRoot == bRoot) return false;
		
		parents[bRoot] = aRoot;
		return true;
	}
	

	public static void main(String[] args) throws IOException {
		int T = Integer.parseInt(br.readLine());
		for(int tc = 1; tc <= T; tc++) {
			st = new StringTokenizer(br.readLine(), " ");
			N = Integer.parseInt(st.nextToken()) + 1;
			int M = Integer.parseInt(st.nextToken());
			int o, x, y;
			makeSet();
			bw.append("#" + tc + " ");
			for(int i = 0; i < M; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				o = Integer.parseInt(st.nextToken());
				x = Integer.parseInt(st.nextToken());
				y = Integer.parseInt(st.nextToken());
				if(o == 0) {
					union(x, y);
				}else {
					if(findSet(x) == findSet(y)) {
						bw.append("1");
					}else {
						bw.append("0");
					}
                }
			}
			bw.append("\n");		
			
		}
		bw.flush();
	}
}
profile
SSAFY 7기

0개의 댓글