Submission #4817029


Source Code Expand

N = gets.to_i
es = {}
(N-1).times{
  a,b = gets.split.map &:to_i
  es[a] ||= {}; es[b] ||= {}
  es[a][b] = es[b][a] = 1
}
ranges = Array.new(N+1,nil)
parities = Array.new(N+1,nil)
K = gets.to_i
K.times {
  v,q = gets.split.map &:to_i
  ranges[v] = [q,q]
  parities[v] = q%2
}

queue = [[1,0]]
while queue.size > 0 do
  n,s = queue.pop
  case s
  when 0
    queue << [n,1]
    ks = es[n]
    ks.each{ |m,_|
      es[m].delete(n)
      queue << [m,0]
    }
  when 1
    r = ranges[n]
    q = parities[n]
    rs = es[n].keys.map{ |m| ranges[m] }.compact.map{ |a,b| [a-1,b+1] }
    qs = es[n].keys.map{ |m| parities[m] }.compact.map{ |q| q ^ 1 }
    if r && q
      rs << r
      qs << q
    end
    if qs.uniq.size > 1
      puts "No"; exit 
    end
    next if qs.size == 0 # rs.size == 0
    rmin = rs.map{ |a,b| a }.max
    rmax = rs.map{ |a,b| b }.min
    if rmax < rmin
      puts "No"; exit
    end
    ranges[n] = [rmin, rmax]
    parities[n] = qs[0]
  end
end

puts "Yes"
numbers = Array.new(N+1, nil)
queue = [[1,nil]]
INF = 10**9
while queue.size > 0 do
  n,w = queue.pop
  vs = []
  if w
    vs << w-1
    vs << w+1
  end
  range = ranges[n]
  if range
    vs << range[0]
  end
  v = range ? vs.find{ |v| range[0] <= v && v <= range[1] } : vs[0]
  numbers[n] = v
  es[n].each{ |m,_|
    queue << [m,v]
  }
end

puts numbers[1..-1]

Submission Info

Submission Time
Task E - Integers on a Tree
User Corvvs
Language Ruby (2.3.3)
Score 800
Code Size 1412 Byte
Status AC
Exec Time 1165 ms
Memory 68848 KiB

Compile Error

./Main.rb:4: warning: `&' interpreted as argument prefix
./Main.rb:12: warning: `&' interpreted as argument prefix
./Main.rb:32: warning: shadowing outer local variable - q
./Main.rb:66: warning: shadowing outer local variable - v

Judge Result

Set Name sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 3
AC × 39
Set Name Test Cases
sample sample_01.txt, sample_02.txt, sample_03.txt
All binary_01.txt, binary_02.txt, hand_01.txt, hand_02.txt, hand_03.txt, kary_01.txt, kary_02.txt, kary_03.txt, line_01.txt, line_02.txt, line_03.txt, line_04.txt, line_05.txt, line_06.txt, random0_01.txt, random1_01.txt, random1_02.txt, random1_03.txt, random1_04.txt, random1_05.txt, random1_06.txt, random1_07.txt, random1_08.txt, random2_01.txt, random2_02.txt, random2_03.txt, random2_04.txt, random2_05.txt, random2_06.txt, random3_01.txt, random3_02.txt, random4_01.txt, random4_02.txt, random4_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, star_01.txt, star_02.txt
Case Name Status Exec Time Memory
binary_01.txt AC 894 ms 55916 KiB
binary_02.txt AC 593 ms 45308 KiB
hand_01.txt AC 7 ms 1788 KiB
hand_02.txt AC 7 ms 1788 KiB
hand_03.txt AC 7 ms 1788 KiB
kary_01.txt AC 348 ms 38652 KiB
kary_02.txt AC 590 ms 40188 KiB
kary_03.txt AC 456 ms 38652 KiB
line_01.txt AC 398 ms 45052 KiB
line_02.txt AC 704 ms 45936 KiB
line_03.txt AC 782 ms 55664 KiB
line_04.txt AC 865 ms 55920 KiB
line_05.txt AC 616 ms 45308 KiB
line_06.txt AC 682 ms 55164 KiB
random0_01.txt AC 395 ms 44284 KiB
random1_01.txt AC 673 ms 40316 KiB
random1_02.txt AC 746 ms 46076 KiB
random1_03.txt AC 780 ms 46076 KiB
random1_04.txt AC 1016 ms 46204 KiB
random1_05.txt AC 674 ms 40188 KiB
random1_06.txt AC 696 ms 40316 KiB
random1_07.txt AC 774 ms 46204 KiB
random1_08.txt AC 1165 ms 56700 KiB
random2_01.txt AC 521 ms 38780 KiB
random2_02.txt AC 446 ms 38780 KiB
random2_03.txt AC 539 ms 38780 KiB
random2_04.txt AC 487 ms 44668 KiB
random2_05.txt AC 594 ms 44668 KiB
random2_06.txt AC 861 ms 55292 KiB
random3_01.txt AC 338 ms 38780 KiB
random3_02.txt AC 688 ms 44668 KiB
random4_01.txt AC 657 ms 40316 KiB
random4_02.txt AC 671 ms 40316 KiB
random4_03.txt AC 688 ms 40316 KiB
sample_01.txt AC 7 ms 1788 KiB
sample_02.txt AC 7 ms 1788 KiB
sample_03.txt AC 7 ms 1788 KiB
star_01.txt AC 845 ms 68848 KiB
star_02.txt AC 684 ms 67184 KiB