Submission #42277952
Source Code Expand
END { load __FILE__ unless $stdin.eof? } class PairingHeap class Node attr_reader :key, :children def initialize(key) @key = key @children = [] end end def initialize(pushes = []) @heaps = pushes.map { |key| Node.new(key) } end def push(key) @heaps << Node.new(key) return self end def shift return nil if @heaps.empty? reshape key, @heaps = @heaps[0].key, @heaps[0].children return key end def first return nil if @heaps.empty? reshape return @heaps[0].key end private def reshape @heaps.sort_by!(&:key) @heaps.size.pred.times do h = @heaps.pop @heaps[-1].children << h end end end module HeapWithObject def initialize(pushes = []) @objs = pushes.group_by(&:first) .transform_values! { |q| q.map!(&:last) } super(@objs.keys) end def push(key, obj) if (q = @objs[key]) q << obj return self end @objs[key] = [obj] return super(key) end def shift key = first return unless key q = @objs[key] obj = q.shift if q.empty? @objs.delete(key) super # == key end return key, obj end def first_pair key = first return unless key return key, @objs[key][0] end end class PriorityQueue < PairingHeap prepend HeapWithObject end n, m, k = gets.split.map!(&:to_i) @nbrs = Array.new(n + 1) { [] } m.times do a, b = gets.split.map!(&:to_i) @nbrs[a] << b @nbrs[b] << a end @guards = Array.new(n + 1, -1) pushes = k.times.map do g, h = gets.split.map!(&:to_i) @guards[g] = h [-h, g] end pq = PriorityQueue.new(pushes) while (h, v = pq.shift) h = -h next if h < @guards[v] h -= 1 @nbrs[v].each do |u| next if @guards[u] >= h @guards[u] = h pq.push(-h, u) end end idx = (1..n).select { |v| @guards[v] >= 0 } puts idx.size puts idx * ' ' __END__
Submission Info
Submission Time | |
---|---|
Task | E - Art Gallery on Graph |
User | hmmnrst |
Language | Ruby (2.7.1) |
Score | 475 |
Code Size | 2035 Byte |
Status | AC |
Exec Time | 1260 ms |
Memory | 94940 KiB |
Judge Result
Set Name | Sample | All | after_contest | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 475 / 475 | 0 / 0 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 02_tree_00.txt, 02_tree_01.txt, 03_path_00.txt, 03_path_01.txt, 04_perfect_00.txt, 05_corner_1_00.txt, 05_corner_1_01.txt, 05_corner_1_02.txt, 05_corner_1_03.txt, 05_corner_1_04.txt, 05_corner_1_05.txt, 06_star_00.txt, 06_star_01.txt, 07_n_m_k_max_00.txt, 07_n_m_k_max_01.txt, 07_n_m_k_max_02.txt, 07_n_m_k_max_03.txt, 07_n_m_k_max_04.txt |
after_contest | 99_after_contest_00.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 59 ms | 14108 KiB |
00_sample_01.txt | AC | 53 ms | 14272 KiB |
00_sample_02.txt | AC | 56 ms | 14320 KiB |
01_random_00.txt | AC | 121 ms | 25452 KiB |
01_random_01.txt | AC | 97 ms | 25876 KiB |
01_random_02.txt | AC | 475 ms | 37588 KiB |
01_random_03.txt | AC | 512 ms | 45372 KiB |
01_random_04.txt | AC | 111 ms | 23716 KiB |
01_random_05.txt | AC | 564 ms | 48640 KiB |
01_random_06.txt | AC | 250 ms | 34116 KiB |
01_random_07.txt | AC | 255 ms | 36332 KiB |
01_random_08.txt | AC | 95 ms | 25100 KiB |
01_random_09.txt | AC | 95 ms | 25968 KiB |
01_random_10.txt | AC | 483 ms | 43752 KiB |
01_random_11.txt | AC | 534 ms | 45700 KiB |
02_tree_00.txt | AC | 550 ms | 44292 KiB |
02_tree_01.txt | AC | 255 ms | 34420 KiB |
03_path_00.txt | AC | 255 ms | 31812 KiB |
03_path_01.txt | AC | 244 ms | 32556 KiB |
04_perfect_00.txt | AC | 223 ms | 17520 KiB |
05_corner_1_00.txt | AC | 1165 ms | 94772 KiB |
05_corner_1_01.txt | AC | 1169 ms | 94884 KiB |
05_corner_1_02.txt | AC | 1260 ms | 94752 KiB |
05_corner_1_03.txt | AC | 1243 ms | 94940 KiB |
05_corner_1_04.txt | AC | 1161 ms | 71372 KiB |
05_corner_1_05.txt | AC | 1189 ms | 71028 KiB |
06_star_00.txt | AC | 711 ms | 66452 KiB |
06_star_01.txt | AC | 719 ms | 66528 KiB |
07_n_m_k_max_00.txt | AC | 960 ms | 71572 KiB |
07_n_m_k_max_01.txt | AC | 953 ms | 57124 KiB |
07_n_m_k_max_02.txt | AC | 955 ms | 70556 KiB |
07_n_m_k_max_03.txt | AC | 972 ms | 70696 KiB |
07_n_m_k_max_04.txt | AC | 984 ms | 72804 KiB |
99_after_contest_00.txt | AC | 888 ms | 83640 KiB |