Submission #74234086


Source Code Expand

class BinaryHeap
  class << self
    def min
      new do
        def _higher?(a,b); a < b; end
      end
    end
    def max
      new do
        def _higher?(a,b); a > b; end
      end
    end
  end
  def initialize(&block)
    @heap = []
    instance_exec(&block) if block_given?
    raise "you must have _higher?" unless respond_to? :_higher?
  end

  def empty?; @heap.empty?; end
  def size; @heap.size; end
  def top; @heap[0]; end
  def pop; el = @heap.pop; @heap.empty? ? el : replace_top(el); end
  def replace_top(el); @heap[0], x = el, @heap[0]; _down!(0); x; end
  def push(x); @heap << x; _up!(@heap.size - 1); end
  def inspect;"#<PQ: @heap = #{@heap}>"; end
  alias_method :to_s, :inspect
  alias_method :<<, :push

  private
  def _up!(i)
    h = @heap
    x = h[i]
    while i > 0
      up = (i - 1) >> 1
      break if _higher?(h[up], x)
      h[i] = h[up]
      i = up
    end
    h[i] = x
  end

  def _down!(up)
    h = @heap
    x = h[up]
    n = h.size
    while (j = 2 * up + 1) < n
      j += 1 if j + 1 < n && _higher?(h[j + 1], h[j])
      y = h[j]
      break if _higher?(x, y)
      h[up] = y
      up = j
    end
    h[up] = x
  end

end
PQ = BinaryHeap

N, M = gets.split.map(&:to_i)
G = Array.new(N + 1){ [] }
D = Array.new(N + 1, 0)
S = []
M.times do
  a,b = gets.split.map(&:to_i)
  G[a] << b
  D[b] += 1
end
pq = PQ.min
(1 .. N).each do |s|
  pq.push(s) if D[s].zero?
end
until pq.empty?
  u = pq.pop
  S << u
  G[u].each do |v|
    D[v] -= 1
    pq.push(v) if D[v].zero?
  end
end
puts S * ' '

Submission Info

Submission Time
Task D - Course Enrollment Order
User tinsep19
Language Ruby 3.4 (ruby 3.4.5)
Score 400
Code Size 1614 Byte
Status AC
Exec Time 464 ms
Memory 37200 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 5
AC × 60
Set Name Test Cases
Sample sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt
All sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt
Case Name Status Exec Time Memory
in01.txt AC 38 ms 15336 KiB
in02.txt AC 38 ms 15184 KiB
in03.txt AC 283 ms 35560 KiB
in04.txt AC 279 ms 35832 KiB
in05.txt AC 420 ms 37196 KiB
in06.txt AC 278 ms 34964 KiB
in07.txt AC 419 ms 35672 KiB
in08.txt AC 295 ms 35596 KiB
in09.txt AC 464 ms 36436 KiB
in10.txt AC 193 ms 18248 KiB
in11.txt AC 366 ms 36572 KiB
in12.txt AC 38 ms 15224 KiB
in13.txt AC 45 ms 16328 KiB
in14.txt AC 42 ms 15816 KiB
in15.txt AC 43 ms 15864 KiB
in16.txt AC 42 ms 15796 KiB
in17.txt AC 37 ms 15356 KiB
in18.txt AC 425 ms 37152 KiB
in19.txt AC 38 ms 15548 KiB
in20.txt AC 43 ms 15824 KiB
in21.txt AC 38 ms 15280 KiB
in22.txt AC 41 ms 15776 KiB
in23.txt AC 41 ms 16184 KiB
in24.txt AC 44 ms 16592 KiB
in25.txt AC 229 ms 24528 KiB
in26.txt AC 40 ms 15728 KiB
in27.txt AC 41 ms 16116 KiB
in28.txt AC 40 ms 15660 KiB
in29.txt AC 42 ms 15812 KiB
in30.txt AC 279 ms 35108 KiB
in31.txt AC 458 ms 37152 KiB
in32.txt AC 308 ms 35704 KiB
in33.txt AC 448 ms 37200 KiB
in34.txt AC 317 ms 35836 KiB
in35.txt AC 439 ms 35748 KiB
in36.txt AC 287 ms 34896 KiB
in37.txt AC 311 ms 35628 KiB
in38.txt AC 279 ms 35764 KiB
in39.txt AC 278 ms 35636 KiB
in40.txt AC 38 ms 15112 KiB
in41.txt AC 38 ms 15296 KiB
in42.txt AC 38 ms 15364 KiB
in43.txt AC 38 ms 15196 KiB
in44.txt AC 38 ms 15172 KiB
in45.txt AC 38 ms 15288 KiB
in46.txt AC 37 ms 15280 KiB
in47.txt AC 38 ms 15288 KiB
in48.txt AC 38 ms 15188 KiB
in49.txt AC 38 ms 15364 KiB
in50.txt AC 38 ms 15316 KiB
in51.txt AC 38 ms 15188 KiB
in52.txt AC 38 ms 15220 KiB
in53.txt AC 37 ms 15260 KiB
in54.txt AC 37 ms 15148 KiB
in55.txt AC 278 ms 35008 KiB
sample01.txt AC 38 ms 15144 KiB
sample02.txt AC 37 ms 15336 KiB
sample03.txt AC 38 ms 15308 KiB
sample04.txt AC 38 ms 15288 KiB
sample05.txt AC 38 ms 15288 KiB