Submission #14152776
Source Code Expand
def min(a,b); a < b ? a : b; end
INF = 10 ** 7
N,M = gets.split.map(&:to_i)
G = Array.new(N + 1){ [] }
M.times do
u,v = gets.split.map(&:to_i)
G[u] << v
G[v] << u
end
S,K = 2.times.map{ gets.to_i }
T = gets.split.map(&:to_i)
def shortest_path(s)
used = Array.new(N + 1)
dist = Array.new(N + 1, INF)
q = [s]
used[s] = true
dist[s] = 0
until q.empty?
u = q.shift
d = dist[u]
G[u].each do |v|
next if used[v]
used[v] = true
dist[v] = d + 1
q << v
end
end
dist
end
D = T.map{|t| shortest_path(t) }
init = shortest_path(S)
dp = Array.new(K){ Array.new(1 << K, Float::INFINITY) }
T.each_with_index do |t,i|
dp[i][1 << i] = init[t]
end
(1 << K).times do |visited|
T.each_with_index do |from, i|
next if dp[i][visited] > INF
T.each_with_index do |to,j|
dp[j][visited | 1 << j] = min(dp[i][visited] + D[i][to], dp[j][visited | 1 << j])
end
end
end
puts K.times.map{|i| dp[i][-1] }.min
Submission Info
| Submission Time | |
|---|---|
| Task | M - Real Traveling Salesman |
| User | tinsep19 |
| Language | Ruby (2.7.1) |
| Score | 6 |
| Code Size | 1036 Byte |
| Status | AC |
| Exec Time | 2345 ms |
| Memory | 57212 KiB |
Judge Result
| Set Name | All | Sample | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 6 / 6 | 0 / 0 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| All | sample_01.txt, sample_02.txt, testcase_1.txt, testcase_10.txt, testcase_11.txt, testcase_12.txt, testcase_13.txt, testcase_14.txt, testcase_15.txt, testcase_16.txt, testcase_17.txt, testcase_18.txt, testcase_19.txt, testcase_2.txt, testcase_20.txt, testcase_21.txt, testcase_22.txt, testcase_23.txt, testcase_24.txt, testcase_25.txt, testcase_26.txt, testcase_27.txt, testcase_28.txt, testcase_29.txt, testcase_3.txt, testcase_30.txt, testcase_31.txt, testcase_32.txt, testcase_33.txt, testcase_34.txt, testcase_35.txt, testcase_4.txt, testcase_5.txt, testcase_6.txt, testcase_7.txt, testcase_8.txt, testcase_9.txt |
| Sample | sample_01.txt, sample_02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 52 ms | 14184 KiB |
| sample_02.txt | AC | 52 ms | 14160 KiB |
| testcase_1.txt | AC | 2308 ms | 57212 KiB |
| testcase_10.txt | AC | 208 ms | 16556 KiB |
| testcase_11.txt | AC | 238 ms | 16736 KiB |
| testcase_12.txt | AC | 57 ms | 14396 KiB |
| testcase_13.txt | AC | 859 ms | 19348 KiB |
| testcase_14.txt | AC | 467 ms | 17716 KiB |
| testcase_15.txt | AC | 166 ms | 16272 KiB |
| testcase_16.txt | AC | 787 ms | 18248 KiB |
| testcase_17.txt | AC | 110 ms | 15528 KiB |
| testcase_18.txt | AC | 160 ms | 16316 KiB |
| testcase_19.txt | AC | 333 ms | 30368 KiB |
| testcase_2.txt | AC | 2345 ms | 47588 KiB |
| testcase_20.txt | AC | 466 ms | 35800 KiB |
| testcase_21.txt | AC | 932 ms | 44428 KiB |
| testcase_22.txt | AC | 459 ms | 35528 KiB |
| testcase_23.txt | AC | 1454 ms | 47336 KiB |
| testcase_24.txt | AC | 392 ms | 33112 KiB |
| testcase_25.txt | AC | 597 ms | 39928 KiB |
| testcase_26.txt | AC | 401 ms | 33232 KiB |
| testcase_27.txt | AC | 422 ms | 34092 KiB |
| testcase_28.txt | AC | 1398 ms | 48184 KiB |
| testcase_29.txt | AC | 252 ms | 25676 KiB |
| testcase_3.txt | AC | 1769 ms | 23520 KiB |
| testcase_30.txt | AC | 268 ms | 26976 KiB |
| testcase_31.txt | AC | 2321 ms | 53800 KiB |
| testcase_32.txt | AC | 1389 ms | 47988 KiB |
| testcase_33.txt | AC | 927 ms | 43920 KiB |
| testcase_34.txt | AC | 56 ms | 14268 KiB |
| testcase_35.txt | AC | 52 ms | 14068 KiB |
| testcase_4.txt | AC | 822 ms | 18728 KiB |
| testcase_5.txt | AC | 203 ms | 16712 KiB |
| testcase_6.txt | AC | 219 ms | 16544 KiB |
| testcase_7.txt | AC | 166 ms | 16232 KiB |
| testcase_8.txt | AC | 143 ms | 14892 KiB |
| testcase_9.txt | AC | 308 ms | 16748 KiB |