백준 1717번 집합의 표현

veloger·2023년 2월 3일
0


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 Main {
	
	static int id[]=null;
	static BufferedWriter bw;
	
	static int root(int node) {
		while(id[node] != node) {
			id[node] = id[id[node]];
			node=id[node];
		}
			return node;
	}
	
	static void union(int firstNode, int secNode) {
		int valueFirst = root(firstNode);
		int valueSec = root(secNode);
		if(valueFirst != valueSec) {
			id[valueFirst] = valueSec;
		}
	}
	
	static boolean isConnected(int firstNode, int secNode) {
		return root(firstNode) == root(secNode);
	}
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
		bw =new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int count = Integer.parseInt(st.nextToken());
		int testcase = Integer.parseInt(st.nextToken());
		id= new int[count+1];
		
		for(int i=1;i<=count;i++) {
			id[i] = i;
		}
		
		for(int i=0;i<testcase;i++) {
			st = new StringTokenizer(br.readLine());
			int uniOrFind = Integer.parseInt(st.nextToken());
			int firstNode=Integer.parseInt(st.nextToken());
			int secNode=Integer.parseInt(st.nextToken());
			
			if(uniOrFind == 0) {
				union(firstNode, secNode);
			}
			else {
				bw.write(isConnected(firstNode, secNode) ? "YES\n" : "NO\n");
			}
		}
		bw.flush();
	}

}

0개의 댓글