結果

問題 No.17 2つの地点に泊まりたい
コンテスト
ユーザー vjudge1
提出日時 2026-03-15 23:41:21
言語 Crystal
(1.19.1)
コンパイル:
crystal build -Donline_judge -o a.out --release --no-debug _filename_
実行:
./a.out
結果
RE  
実行時間 -
コード長 663 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 18,473 ms
コンパイル使用メモリ 335,824 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-03-15 23:41:46
合計ジャッジ時間 25,034 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 28
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

n = gets.not_nil!.to_i
s = gets.not_nil!.split.map(&.to_i)

# Initialize graph with large values (500,000,000)
g = Array.new(n) { Array.new(n, 500_000_000) }

m = gets.not_nil!.to_i
m.times do
  a, b, c = gets.not_nil!.split.map(&.to_i)
  g[a][b] = c
  g[b][a] = c
end

# Floyd-Warshall algorithm
n.times do |k|
  n.times do |i|
    n.times do |j|
      if g[i][k] + g[k][j] < g[i][j]
        g[i][j] = g[i][k] + g[k][j]
      end
    end
  end
end

ans = 2_000_000_000
(1...n-1).each do |t1|
  (1...n-1).each do |t2|
    next if t1 == t2
    cost = g[0][t1] + g[t1][t2] + g[t2][n-1] + s[t1] + s[t2]
    ans = Math.min(ans, cost) if cost < ans
  end
end

puts ans
0