提出 #572252


ソースコード 拡げる

class UnionFind
    def initialize(n)
        @par = [*0...n]
        @rnk = [0]*n
    end

    def find(x)
        return x if @par[x] == x
        @par[x] = find(@par[x])
    end

    def same(x,y)
        find(x) == find(y)
    end

    def unite(x,y)
        x=find(x);y=find(y)
        return if x==y

        if @rnk[x] < @rnk[y]
            @par[x] = y
        elsif
            @par[y] = x
            @rnk[x]+=1 if @rnk[x]==@rnk[y]
        end
    end
end

n,q = gets.chomp.split.map(&:to_i)
u = UnionFind.new(n)

1.upto(q){
    p,a,b = gets.chomp.split.map(&:to_i)
    if p==0
        u.unite(a,b)
    else
        puts u.same(a,b) ? "Yes" : "No"
    end
}

提出情報

提出日時
問題 B - Union Find
ユーザ attribute_k
言語 Ruby (2.1.5p273)
得点 100
コード長 704 Byte
結果 AC
実行時間 1197 ms
メモリ 7668 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 1
AC × 19
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
00_sample_01.txt AC 61 ms 5072 KiB
subtask_01_01.txt AC 713 ms 5368 KiB
subtask_01_02.txt AC 70 ms 7556 KiB
subtask_01_03.txt AC 1138 ms 5104 KiB
subtask_01_04.txt AC 1197 ms 7532 KiB
subtask_01_05.txt AC 132 ms 5100 KiB
subtask_01_06.txt AC 153 ms 7668 KiB
subtask_01_07.txt AC 1152 ms 5100 KiB
subtask_01_08.txt AC 1183 ms 7528 KiB
subtask_01_09.txt AC 56 ms 5096 KiB
subtask_01_10.txt AC 69 ms 7524 KiB
subtask_01_11.txt AC 1139 ms 5144 KiB
subtask_01_12.txt AC 1155 ms 7532 KiB
subtask_01_13.txt AC 919 ms 5228 KiB
subtask_01_14.txt AC 72 ms 7532 KiB
subtask_01_15.txt AC 1139 ms 5100 KiB
subtask_01_16.txt AC 1161 ms 7656 KiB
subtask_01_17.txt AC 1170 ms 7532 KiB
subtask_01_18.txt AC 1179 ms 7528 KiB