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
AC × 37
AC × 2
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