Submission #34647156


Source Code Expand

N = gets.to_i
E = Array.new(N+1){[]}
(N-1).times{
	a,b = gets.split.map(&:to_i)
	E[a]<<b
	E[b]<<a
}
K = Array.new(N+1){[]}
U = gets.to_i.times.map{
	u,k = gets.split.map(&:to_i)
	K[u]<<-k
	next u
}
F = lambda{|ds,ans,a,p=a,anc=[]|
	ds[a] = anc.size
	ans[a] = anc.values_at(*K[a])
	anc<<a
	E[a].each{|b|
		F[ds,ans,b,a,anc] if b!=p
	}
	anc.pop
	next ds,ans
}

ds, = F[[nil]*(N+1),[nil]*(N+1),1]
ds,A1 = F[ds,[nil]*(N+1),(1..N).max_by{|r| ds[r] }]
ds,A2 = F[ds,[nil]*(N+1),(1..N).max_by{|r| ds[r] }]

puts U.map{|u|
	a1 = A1[u].shift
	a2 = A2[u].shift
	next a1||a2||-1
}

Submission Info

Submission Time
Task F - Exactly K Steps
User ds14050
Language Ruby (2.7.1)
Score 500
Code Size 602 Byte
Status AC
Exec Time 1826 ms
Memory 313788 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 22
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt
Case Name Status Exec Time Memory
example_00.txt AC 59 ms 14100 KiB
example_01.txt AC 58 ms 14304 KiB
test_00.txt AC 1429 ms 313788 KiB
test_01.txt AC 55 ms 13952 KiB
test_02.txt AC 1630 ms 171912 KiB
test_03.txt AC 1159 ms 92004 KiB
test_04.txt AC 1151 ms 92300 KiB
test_05.txt AC 1826 ms 259052 KiB
test_06.txt AC 1239 ms 94640 KiB
test_07.txt AC 1160 ms 92244 KiB
test_08.txt AC 311 ms 32004 KiB
test_09.txt AC 301 ms 31908 KiB
test_10.txt AC 293 ms 30908 KiB
test_11.txt AC 522 ms 85420 KiB
test_12.txt AC 417 ms 46116 KiB
test_13.txt AC 391 ms 44772 KiB
test_14.txt AC 1597 ms 210548 KiB
test_15.txt AC 1122 ms 88440 KiB
test_16.txt AC 1088 ms 90856 KiB
test_17.txt AC 1279 ms 186864 KiB
test_18.txt AC 854 ms 74468 KiB
test_19.txt AC 873 ms 71820 KiB