Submission #1515248


Source Code Expand

using System;
using System.Collections.Generic;
using System.Linq;
 
public class UnionFind {
    private int[] _par;
    private int[] _rank;
 
    public UnionFind(int size) {
        _par = new int[size+1];
        _rank = new int[size+1];
 
        for (int i = 0; i < _par.Length; i++) {
            _par[i] = i;
        }
    }
 
    int Root(int x) {
        if (_par[x] == x)
            return x;
        else {
            _par[x] = Root(_par[x]);
            return _par[x];
        }
    }
 
    public bool IsSame(int x, int y) {
        return Root(x) == Root(y);
    }
 
    public void Unite(int x, int y) {
        x = Root(x);
        y = Root(y);
        if (x == y) return;
 
        if (_rank[x] < _rank[y]) {
            _par[x] = y;
        }
        else {
            _par[y] = x;
            if (_rank[x] == _rank[y]) {
                _rank[x]++;
            }
        }
    }
}
 
class Program {
    static int ReadInt() {
        return int.Parse(Console.ReadLine());
    }
 
    static int[] ReadInts() {
        return Console.ReadLine().Trim().Split().Select(int.Parse).ToArray();
    }
 
    static string ReadLine() {
        return Console.ReadLine().Trim();
    }
 
    static string[] ReadStrings() {
        return Console.ReadLine().Trim().Split();
    }
 
    static void Main() {
        var nq = ReadInts();
        int n = nq[0], q = nq[1];
 
        var uni = new UnionFind(n);
        for (int i = 0; i < q; i++) {
            var pab = ReadInts();
            int p = pab[0], a = pab[1], b = pab[2];
 
            if (p == 0) { // union
                uni.Unite(a, b);
            }
            else { // query
                Console.WriteLine(uni.IsSame(a, b) ? "Yes" : "No");
            }
        }
    }
}

Submission Info

Submission Time
Task B - Union Find
User noriok
Language C# (Mono 4.6.2.0)
Score 100
Code Size 1838 Byte
Status AC
Exec Time 968 ms
Memory 18572 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 22 ms 11220 KB
subtask_01_01.txt AC 567 ms 15688 KB
subtask_01_02.txt AC 23 ms 11872 KB
subtask_01_03.txt AC 917 ms 14084 KB
subtask_01_04.txt AC 944 ms 16524 KB
subtask_01_05.txt AC 74 ms 17488 KB
subtask_01_06.txt AC 72 ms 15968 KB
subtask_01_07.txt AC 940 ms 16000 KB
subtask_01_08.txt AC 968 ms 16524 KB
subtask_01_09.txt AC 23 ms 13396 KB
subtask_01_10.txt AC 23 ms 11872 KB
subtask_01_11.txt AC 926 ms 16004 KB
subtask_01_12.txt AC 950 ms 18572 KB
subtask_01_13.txt AC 786 ms 15848 KB
subtask_01_14.txt AC 25 ms 9824 KB
subtask_01_15.txt AC 910 ms 16000 KB
subtask_01_16.txt AC 955 ms 16524 KB
subtask_01_17.txt AC 651 ms 14224 KB
subtask_01_18.txt AC 656 ms 14224 KB