Submission #420342


Source Code Expand

import java.io.*;
import java.util.*;
import java.lang.ArrayIndexOutOfBoundsException;
import java.math.BigInteger;

/**
 * @author yoshikyoto
 */
class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(new InputStreamReader(System.in));
		int n = sc.nextInt();
		int q = sc.nextInt();
		
		UnionFindTree uft = new UnionFindTree(n);
		
		for (int i = 0; i < q; i++) {
			int p = sc.nextInt();
			int a = sc.nextInt();
			int b = sc.nextInt();
			
			if(p == 0){
				uft.unite(a, b);
			} else {
				if(uft.same(a, b)){
					System.out.println("Yes");
				}else{
					System.out.println("No");
				}
			}
		}
		sc.close();
	}
}

/**
 * UnionFindTree 
 * @author yoshikyoto
 */
class UnionFindTree {
	public int[] parent, rank;
	public int n;
	public int count;

	// 初期化
	UnionFindTree(int n) {
		this.n = n;
		count = n;
		parent = new int[n];
		rank = new int[n];
		for (int i = 0; i < n; i++) {
			parent[i] = i;
			rank[i] = 0;
		}
	}

	// 根を求める
	int find(int x) {
		if (parent[x] == x) {
			return x;
		} else {
			return parent[x] = find(parent[x]);
		}
	}

	// xとyの集合を結合
	void unite(int x, int y) {
		x = find(x);
		y = find(y);
		if (x == y) {
			return;
		}
		if (rank[x] < rank[y]) {
			parent[x] = y;
			count--;
		} else {
			parent[y] = x;
			if (rank[x] == rank[y])
				rank[x]++;
			count--;
		}
	}

	// xとyが同じ集合か
	boolean same(int x, int y) {
		return find(x) == find(y);
	}
}

Submission Info

Submission Time
Task B - Union Find
User yoshikyoto
Language Java (OpenJDK 1.7.0)
Score 100
Code Size 1566 Byte
Status AC
Exec Time 3690 ms
Memory 40444 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 19
Set Name Test Cases
Sample 00_sample_01.txt
All 00_sample_01.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 341 ms 24076 KB
subtask_01_01.txt AC 2746 ms 38696 KB
subtask_01_02.txt AC 360 ms 25540 KB
subtask_01_03.txt AC 3261 ms 37600 KB
subtask_01_04.txt AC 3690 ms 39464 KB
subtask_01_05.txt AC 1197 ms 38432 KB
subtask_01_06.txt AC 1125 ms 39564 KB
subtask_01_07.txt AC 3560 ms 38092 KB
subtask_01_08.txt AC 3446 ms 39524 KB
subtask_01_09.txt AC 397 ms 25356 KB
subtask_01_10.txt AC 388 ms 26484 KB
subtask_01_11.txt AC 3396 ms 37536 KB
subtask_01_12.txt AC 3539 ms 39248 KB
subtask_01_13.txt AC 2941 ms 37476 KB
subtask_01_14.txt AC 482 ms 27656 KB
subtask_01_15.txt AC 3535 ms 38232 KB
subtask_01_16.txt AC 3603 ms 39276 KB
subtask_01_17.txt AC 2681 ms 40444 KB
subtask_01_18.txt AC 2785 ms 39956 KB