Submission #420239


Source Code Expand

class Node
    attr_accessor :parent, :rank
    def initialize(n)
        @parent = n
        @rank = 0
    end
end

class UnionFindTree
    attr_accessor :nodes, :count
    def initialize(n)
        @nodes = (0..n).to_a.map { |i| Node.new(i) }
        @count = n
    end
    def find(x)
        return x if @nodes[x].parent == x
        return @nodes[x].parent = find(@nodes[x].parent)
    end
    def unite(a, b)
        a = find(a)
        b = find(b)
        return if a == b
        if @nodes[a].rank < @nodes[b].rank
            @nodes[a].parent = b
        else
            @nodes[b].parent = a
            @nodes[b].rank += 1 if @nodes[a].rank == @nodes[b].rank
        end
        @count -= 1
    end
    def same?(a, b)
        find(a) == find(b)
    end
    def parents
        @nodes.map(&:parent)
    end
    def rank
        @nodes.map(&:rank)
    end
end

n, q = gets.split.map(&:to_i)
uf = UnionFindTree.new(n)
q.times do
    p, a, b = gets.split.map(&:to_i)
    case p
    when 0
        uf.unite(a,b)
    when 1
        puts uf.same?(a,b) ? "Yes" : "No"
    end
end

Submission Info

Submission Time
Task B - Union Find
User takuk
Language Ruby (2.1.5p273)
Score 100
Code Size 1134 Byte
Status AC
Exec Time 1479 ms
Memory 14440 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 729 ms 5092 KB
subtask_01_01.txt AC 889 ms 5740 KB
subtask_01_02.txt AC 126 ms 10852 KB
subtask_01_03.txt AC 1281 ms 5096 KB
subtask_01_04.txt AC 1210 ms 13656 KB
subtask_01_05.txt AC 131 ms 5096 KB
subtask_01_06.txt AC 212 ms 14440 KB
subtask_01_07.txt AC 1134 ms 5100 KB
subtask_01_08.txt AC 1239 ms 13664 KB
subtask_01_09.txt AC 54 ms 5100 KB
subtask_01_10.txt AC 125 ms 10860 KB
subtask_01_11.txt AC 1119 ms 5100 KB
subtask_01_12.txt AC 1389 ms 13656 KB
subtask_01_13.txt AC 925 ms 5356 KB
subtask_01_14.txt AC 132 ms 10984 KB
subtask_01_15.txt AC 1096 ms 5100 KB
subtask_01_16.txt AC 1242 ms 13652 KB
subtask_01_17.txt AC 1274 ms 13656 KB
subtask_01_18.txt AC 1479 ms 13664 KB