Submission #62154569
Source Code Expand
Copy
N,M,S,T = gets.split.map(&:to_i)E = Array.new(N+1){[]}M.times{u,v = gets.split.map(&:to_i)E[u]<<vE[v]<<u}S2 = lambda{ # S からの距離一覧。T 以降はなしds = [nil]*(N+1)ds[S] = 0*q = Swhile s = q.shiftE[s].each{|t|if ! ds[t]ds[t] = ds[s]+1q<<tend} if s!=Tendnext ds}.call
N,M,S,T = gets.split.map(&:to_i) E = Array.new(N+1){[]} M.times{ u,v = gets.split.map(&:to_i) E[u]<<v E[v]<<u } S2 = lambda{ # S からの距離一覧。T 以降はなし ds = [nil]*(N+1) ds[S] = 0 *q = S while s = q.shift E[s].each{|t| if ! ds[t] ds[t] = ds[s]+1 q<<t end } if s!=T end next ds }.call #warn :ST,[S,T].inspect #warn :S2,S2.inspect SP = [T] # S から T への最短パス(の1つ) until SP[-1]==S t = SP[-1] d = S2[t]-1 SP<<E[t].find{|s| S2[s]==d } end SP.reverse! SP? = SP.each_with_index.to_h #warn :SP,SP.inspect AP = [0]*N # S から T への代替パスの数(添字は増分) SP[1..].each{|t| d0 = S2[t]-1 E[t].each{|s| if ! SP?[s] d2 = S2[s] AP[d2-d0] += 1 if d2 end } } APD = AP.index{0<_1} # 最善の代替パスの最短からの増分 #warn :AP,AP.inspect #warn :S2T,S2[T] #warn :APD,APD D2Y = lambda{|s| ds = [nil]*(N+1) ds[s] = 0 while s d = ds[s]+1 s,t2 = E[s].select{|t| ! SP?[t] && ! ds[t] && ds[t] = d } break if t2 end next d if s } S2Y = D2Y[S] # S から待避場所(Y字分岐路)までの距離 T2Y = D2Y[T] # T から待避場所(Y字分岐路)までの距離 #warn :S2Y,S2Y #warn :T2Y,T2Y p([ (2*S2[T]+APD if APD), (2*S2[T]+4*S2Y if S2Y), (2*S2[T]+4*T2Y if T2Y) ].tap{ #warn _1.inspect #warn %w[代替パス Sから待避 Tから待避][_1.index _1.compact.min] }.compact.min||-1)
Submission Info
Submission Time | |
---|---|
Task | D - Moving Pieces on Graph |
User | ds14050 |
Language | Ruby (ruby 3.2.2) |
Score | 700 |
Code Size | 1463 Byte |
Status | AC |
Exec Time | 427 ms |
Memory | 53932 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 700 / 700 | ||||
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_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 02_line_00.txt, 02_line_01.txt, 02_line_02.txt, 03_line_like_00.txt, 03_line_like_01.txt, 03_line_like_02.txt, 03_line_like_03.txt, 03_line_like_04.txt, 03_line_like_05.txt, 03_line_like_06.txt, 03_line_like_07.txt, 03_line_like_08.txt, 03_line_like_09.txt, 03_line_like_10.txt, 03_line_like_11.txt, 03_line_like_12.txt, 03_line_like_13.txt, 03_line_like_14.txt, 03_line_like_15.txt, 03_line_like_16.txt, 03_line_like_17.txt, 03_line_like_18.txt, 03_line_like_19.txt, 03_line_like_20.txt, 03_line_like_21.txt, 03_line_like_22.txt, 03_line_like_23.txt, 04_circle_like_00.txt, 04_circle_like_01.txt, 04_circle_like_02.txt, 04_circle_like_03.txt, 04_circle_like_04.txt, 04_circle_like_05.txt, 04_circle_like_06.txt, 04_circle_like_07.txt, 04_circle_like_08.txt, 04_circle_like_09.txt, 05_dense_00.txt, 05_dense_01.txt, 05_dense_02.txt, 06_random_00.txt, 06_random_01.txt, 06_random_02.txt, 06_random_03.txt, 06_random_04.txt, 06_random_05.txt, 06_random_06.txt, 06_random_07.txt, 06_random_08.txt, 06_random_09.txt, 07_uni_00.txt, 07_uni_01.txt, 07_uni_02.txt, 07_uni_03.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 146 ms | 17068 KB |
00_sample_01.txt | AC | 45 ms | 17144 KB |
00_sample_02.txt | AC | 44 ms | 17024 KB |
01_handmade_00.txt | AC | 44 ms | 17244 KB |
01_handmade_01.txt | AC | 44 ms | 17144 KB |
01_handmade_02.txt | AC | 44 ms | 17104 KB |
01_handmade_03.txt | AC | 44 ms | 17116 KB |
01_handmade_04.txt | AC | 43 ms | 17308 KB |
01_handmade_05.txt | AC | 342 ms | 42964 KB |
01_handmade_06.txt | AC | 394 ms | 48516 KB |
02_line_00.txt | AC | 55 ms | 17952 KB |
02_line_01.txt | AC | 365 ms | 42836 KB |
02_line_02.txt | AC | 427 ms | 48340 KB |
03_line_like_00.txt | AC | 277 ms | 39352 KB |
03_line_like_01.txt | AC | 320 ms | 39148 KB |
03_line_like_02.txt | AC | 256 ms | 38752 KB |
03_line_like_03.txt | AC | 270 ms | 39176 KB |
03_line_like_04.txt | AC | 164 ms | 29424 KB |
03_line_like_05.txt | AC | 257 ms | 40848 KB |
03_line_like_06.txt | AC | 153 ms | 29364 KB |
03_line_like_07.txt | AC | 267 ms | 41216 KB |
03_line_like_08.txt | AC | 260 ms | 40188 KB |
03_line_like_09.txt | AC | 264 ms | 36168 KB |
03_line_like_10.txt | AC | 172 ms | 32880 KB |
03_line_like_11.txt | AC | 331 ms | 45492 KB |
03_line_like_12.txt | AC | 278 ms | 43524 KB |
03_line_like_13.txt | AC | 371 ms | 53932 KB |
03_line_like_14.txt | AC | 334 ms | 43308 KB |
03_line_like_15.txt | AC | 185 ms | 31684 KB |
03_line_like_16.txt | AC | 317 ms | 46088 KB |
03_line_like_17.txt | AC | 422 ms | 48484 KB |
03_line_like_18.txt | AC | 49 ms | 17516 KB |
03_line_like_19.txt | AC | 49 ms | 17484 KB |
03_line_like_20.txt | AC | 44 ms | 17508 KB |
03_line_like_21.txt | AC | 45 ms | 17432 KB |
03_line_like_22.txt | AC | 48 ms | 17464 KB |
03_line_like_23.txt | AC | 47 ms | 17524 KB |
04_circle_like_00.txt | AC | 414 ms | 48128 KB |
04_circle_like_01.txt | AC | 338 ms | 44148 KB |
04_circle_like_02.txt | AC | 386 ms | 47152 KB |
04_circle_like_03.txt | AC | 395 ms | 46248 KB |
04_circle_like_04.txt | AC | 358 ms | 44020 KB |
04_circle_like_05.txt | AC | 95 ms | 21536 KB |
04_circle_like_06.txt | AC | 92 ms | 21492 KB |
04_circle_like_07.txt | AC | 92 ms | 21540 KB |
04_circle_like_08.txt | AC | 94 ms | 21500 KB |
04_circle_like_09.txt | AC | 92 ms | 21448 KB |
05_dense_00.txt | AC | 205 ms | 21116 KB |
05_dense_01.txt | AC | 70 ms | 18132 KB |
05_dense_02.txt | AC | 121 ms | 20008 KB |
06_random_00.txt | AC | 209 ms | 32464 KB |
06_random_01.txt | AC | 217 ms | 33256 KB |
06_random_02.txt | AC | 257 ms | 40732 KB |
06_random_03.txt | AC | 253 ms | 39548 KB |
06_random_04.txt | AC | 240 ms | 35112 KB |
06_random_05.txt | AC | 274 ms | 41824 KB |
06_random_06.txt | AC | 242 ms | 35100 KB |
06_random_07.txt | AC | 267 ms | 41160 KB |
06_random_08.txt | AC | 268 ms | 41232 KB |
06_random_09.txt | AC | 270 ms | 42312 KB |
07_uni_00.txt | AC | 178 ms | 33132 KB |
07_uni_01.txt | AC | 85 ms | 21884 KB |
07_uni_02.txt | AC | 288 ms | 43420 KB |
07_uni_03.txt | AC | 277 ms | 44924 KB |