Submission #1515246


Source Code Expand

import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

int readint() {
    return readln.chomp.to!int;
}

int[] readints() {
    return readln.split.map!(to!int).array;
}

void main() {
    auto nq = readints();
    int n = nq[0], q = nq[1];

    auto uf = new UnionFind(n);
    for (int i = 0; i < q; i++) {
        auto xs = readints();
        int p = xs[0], a = xs[1], b = xs[2];
        switch (p) {
        case 0:
            uf.unite(a, b);
            break;
        case 1:
            writeln(uf.isSame(a, b) ? "Yes" : "No");
            break;
        default:
            break;
        }
    }

}

class UnionFind {
    private int[] _data;

    this(int n) {
        _data = new int[](n + 1);
        _data[] = -1;
    }

    int root(int a) {
        if (_data[a] < 0)
            return a;
        return _data[a] = root(_data[a]);
    }

    bool unite(int a, int b) {
        int rootA = root(a);
        int rootB = root(b);
        if (rootA == rootB)
            return false;
        _data[rootA] += _data[rootB];
        _data[rootB] = rootA;
        return true;
    }

    bool isSame(int a, int b) {
        return root(a) == root(b);
    }

    int size(int a) {
        return -_data[root(a)];
    }
}

Submission Info

Submission Time
Task B - Union Find
User noriok
Language D (DMD64 v2.070.1)
Score 100
Code Size 1398 Byte
Status AC
Exec Time 204 ms
Memory 3836 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 1 ms 256 KB
subtask_01_01.txt AC 117 ms 1660 KB
subtask_01_02.txt AC 1 ms 2428 KB
subtask_01_03.txt AC 173 ms 2044 KB
subtask_01_04.txt AC 202 ms 2300 KB
subtask_01_05.txt AC 14 ms 1276 KB
subtask_01_06.txt AC 15 ms 1660 KB
subtask_01_07.txt AC 204 ms 1916 KB
subtask_01_08.txt AC 199 ms 2300 KB
subtask_01_09.txt AC 1 ms 256 KB
subtask_01_10.txt AC 1 ms 636 KB
subtask_01_11.txt AC 171 ms 1916 KB
subtask_01_12.txt AC 198 ms 2300 KB
subtask_01_13.txt AC 154 ms 3836 KB
subtask_01_14.txt AC 2 ms 764 KB
subtask_01_15.txt AC 177 ms 1916 KB
subtask_01_16.txt AC 199 ms 2300 KB
subtask_01_17.txt AC 195 ms 3836 KB
subtask_01_18.txt AC 202 ms 2044 KB