Submission #26833318
Source Code Expand
$debug = false
def no!; puts'No'; exit end
N = gets.to_i
E = Array.new(N){[]}
(N-1).times{
a,b = gets.split.map{_1.to_i-1}
E[a] << b
E[b] << a
}
V = [nil]*N
K = gets.to_i.times.map{
gets.split.map(&:to_i).then{|v,p|
V[v-=1] = 0,p
next v,p
}
}
D = E.map(&:size)
Q = N.times.select{|v| D[v]<2 }
while a = Q.pop
D[a] -= 1
break unless p = E[a].find{|b,| 0<D[b] }
Q << p if 1 == D[p] -= 1
(d,v),(pd,pv) = V[a],V[p]
next unless d
if pd
dd,dv = d+1+pd,(v-pv).abs
no! if dd<dv || dd&1!=dv&1
if dv <= (d+1-pd).abs
V[p] = d+1,v if d < pd
else
d += 1
if d<pd
pv -= (pd-d)*(pv<=>v)
pd = d
else
v -= (d-pd)*(v<=>pv)
d = pd
end
V[p] = d-(v-pv).abs/2,(v+pv)/2
end
#warn [a,V[a],p,V[p]].inspect if (dd,dv = V[a].zip(V[p]).then{[_1.sum+1,_2.inject(:-).abs]}) and dd<dv || 0<(dd-dv)&1
else
V[p] = d+1,v
end
end
warn'!!!' if $debug && K.any?{|v,p| V[v] != [0,p] }
V[a] = V[a].sum
Q << a
while a = Q.pop
v = V[a]
E[a].each{|b|
db,vb = V[b]
next if db && ! vb
if db
V[b] = (vb-v).abs<db+1 ? v-(v<vb ? 1:-1) : v+(v<vb ? 1:-1)
#warn [[a,v],b,V[b],[db,vb]].inspect if V[b] != vb+db && V[b] != vb-db
else
V[b] = 0<v ? v-1 : v+1
end
Q << b
}
end
if $debug
warn'!' if N.times.any?{|a|
E[a].any?{|b| (V[a]-V[b]).abs != 1 }
}
warn'!!' if K.any?{|v,p| V[v] != p }
end
puts'Yes',V
Submission Info
| Submission Time | |
|---|---|
| Task | E - Integers on a Tree |
| User | ds14050 |
| Language | Ruby (2.7.1) |
| Score | 800 |
| Code Size | 1419 Byte |
| Status | AC |
| Exec Time | 463 ms |
| Memory | 35648 KiB |
Judge Result
| Set Name | sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| 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 | 335 ms | 31996 KiB |
| binary_02.txt | AC | 210 ms | 26260 KiB |
| hand_01.txt | AC | 59 ms | 14256 KiB |
| hand_02.txt | AC | 57 ms | 14288 KiB |
| hand_03.txt | AC | 57 ms | 14172 KiB |
| kary_01.txt | AC | 167 ms | 24580 KiB |
| kary_02.txt | AC | 269 ms | 30316 KiB |
| kary_03.txt | AC | 193 ms | 30568 KiB |
| line_01.txt | AC | 165 ms | 24348 KiB |
| line_02.txt | AC | 264 ms | 23968 KiB |
| line_03.txt | AC | 273 ms | 27104 KiB |
| line_04.txt | AC | 306 ms | 31920 KiB |
| line_05.txt | AC | 205 ms | 26932 KiB |
| line_06.txt | AC | 236 ms | 28168 KiB |
| random0_01.txt | AC | 203 ms | 29988 KiB |
| random1_01.txt | AC | 296 ms | 25948 KiB |
| random1_02.txt | AC | 297 ms | 25952 KiB |
| random1_03.txt | AC | 320 ms | 28592 KiB |
| random1_04.txt | AC | 368 ms | 33628 KiB |
| random1_05.txt | AC | 292 ms | 25864 KiB |
| random1_06.txt | AC | 292 ms | 26268 KiB |
| random1_07.txt | AC | 309 ms | 26416 KiB |
| random1_08.txt | AC | 463 ms | 35492 KiB |
| random2_01.txt | AC | 181 ms | 26032 KiB |
| random2_02.txt | AC | 218 ms | 26196 KiB |
| random2_03.txt | AC | 210 ms | 26344 KiB |
| random2_04.txt | AC | 207 ms | 26396 KiB |
| random2_05.txt | AC | 235 ms | 29904 KiB |
| random2_06.txt | AC | 303 ms | 35648 KiB |
| random3_01.txt | AC | 213 ms | 26288 KiB |
| random3_02.txt | AC | 237 ms | 30024 KiB |
| random4_01.txt | AC | 286 ms | 25836 KiB |
| random4_02.txt | AC | 291 ms | 25736 KiB |
| random4_03.txt | AC | 292 ms | 26260 KiB |
| sample_01.txt | AC | 56 ms | 14104 KiB |
| sample_02.txt | AC | 55 ms | 14264 KiB |
| sample_03.txt | AC | 55 ms | 14252 KiB |
| star_01.txt | AC | 314 ms | 29508 KiB |
| star_02.txt | AC | 200 ms | 29664 KiB |