提出 #62153446


ソースコード 拡げる

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

S2Y = lambda{ # S から待避場所(Y字分岐路)までの距離
	s = S
	while s
		d = S2[s]+1
		s,t2 = E[s].select{|t| ! SP?[t] && S2[t]==d }
		break if t2
	end
	next d if s
}.call
#warn :S2Y,S2Y

T2Y = lambda{ # T から待避場所(Y字分岐路)までの距離
	s = T
	while s
		d = S2[s]+1
		s,t2 = E[s].select{|t| ! S2[t] && S2[t] = d }
		break if t2
	end
	next d-S2[T] if s
}.call
#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)

提出情報

提出日時
問題 D - Moving Pieces on Graph
ユーザ ds14050
言語 Ruby (ruby 3.2.2)
得点 0
コード長 1550 Byte
結果 WA
実行時間 520 ms
メモリ 51352 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 700
結果
AC × 3
AC × 63
WA × 1
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 109 ms 17120 KiB
00_sample_01.txt AC 43 ms 17024 KiB
00_sample_02.txt AC 43 ms 17120 KiB
01_handmade_00.txt AC 44 ms 17144 KiB
01_handmade_01.txt AC 45 ms 17216 KiB
01_handmade_02.txt AC 43 ms 17008 KiB
01_handmade_03.txt AC 44 ms 17156 KiB
01_handmade_04.txt AC 43 ms 17136 KiB
01_handmade_05.txt AC 369 ms 40768 KiB
01_handmade_06.txt AC 402 ms 45460 KiB
02_line_00.txt AC 55 ms 17936 KiB
02_line_01.txt AC 379 ms 39844 KiB
02_line_02.txt AC 483 ms 45756 KiB
03_line_like_00.txt AC 286 ms 35104 KiB
03_line_like_01.txt AC 348 ms 35004 KiB
03_line_like_02.txt AC 314 ms 36980 KiB
03_line_like_03.txt AC 281 ms 36400 KiB
03_line_like_04.txt AC 173 ms 27784 KiB
03_line_like_05.txt AC 293 ms 37784 KiB
03_line_like_06.txt AC 163 ms 27864 KiB
03_line_like_07.txt AC 306 ms 38104 KiB
03_line_like_08.txt AC 298 ms 37204 KiB
03_line_like_09.txt AC 306 ms 33912 KiB
03_line_like_10.txt AC 192 ms 31008 KiB
03_line_like_11.txt AC 400 ms 42532 KiB
03_line_like_12.txt AC 321 ms 40468 KiB
03_line_like_13.txt AC 443 ms 51352 KiB
03_line_like_14.txt AC 402 ms 43000 KiB
03_line_like_15.txt AC 220 ms 30416 KiB
03_line_like_16.txt AC 377 ms 43140 KiB
03_line_like_17.txt AC 520 ms 45648 KiB
03_line_like_18.txt AC 50 ms 17448 KiB
03_line_like_19.txt AC 50 ms 17592 KiB
03_line_like_20.txt AC 45 ms 17480 KiB
03_line_like_21.txt AC 45 ms 17504 KiB
03_line_like_22.txt AC 48 ms 17472 KiB
03_line_like_23.txt AC 48 ms 17588 KiB
04_circle_like_00.txt AC 491 ms 45536 KiB
04_circle_like_01.txt AC 417 ms 40932 KiB
04_circle_like_02.txt AC 479 ms 45372 KiB
04_circle_like_03.txt AC 462 ms 45168 KiB
04_circle_like_04.txt AC 410 ms 41240 KiB
04_circle_like_05.txt WA 94 ms 21188 KiB
04_circle_like_06.txt AC 93 ms 21128 KiB
04_circle_like_07.txt AC 96 ms 21480 KiB
04_circle_like_08.txt AC 94 ms 20704 KiB
04_circle_like_09.txt AC 92 ms 21112 KiB
05_dense_00.txt AC 198 ms 21232 KiB
05_dense_01.txt AC 71 ms 18128 KiB
05_dense_02.txt AC 123 ms 20032 KiB
06_random_00.txt AC 224 ms 32844 KiB
06_random_01.txt AC 259 ms 32152 KiB
06_random_02.txt AC 297 ms 38040 KiB
06_random_03.txt AC 290 ms 37996 KiB
06_random_04.txt AC 249 ms 33872 KiB
06_random_05.txt AC 308 ms 39040 KiB
06_random_06.txt AC 255 ms 33900 KiB
06_random_07.txt AC 301 ms 38500 KiB
06_random_08.txt AC 289 ms 38624 KiB
06_random_09.txt AC 295 ms 39484 KiB
07_uni_00.txt AC 186 ms 31472 KiB
07_uni_01.txt AC 86 ms 21568 KiB
07_uni_02.txt AC 319 ms 40192 KiB
07_uni_03.txt AC 300 ms 41648 KiB