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 |