結果

問題 No.160 最短経路のうち辞書順最小
ユーザー Tsuneo Yoshioka
提出日時 2015-03-02 00:27:08
言語 Ruby
(3.4.1)
結果
WA  
実行時間 -
コード長 1,031 bytes
コンパイル時間 50 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 22,684 KB
最終ジャッジ日時 2024-06-24 00:52:30
合計ジャッジ時間 27,242 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3 WA * 1
other AC * 2 WA * 5 TLE * 1 -- * 18
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

N, M, S, G = gets.split.map(&:to_i)
INF=99999
ma = Array.new(N).map{Array.new(N,INF)}
ro = Array.new(N).map{Array.new(N,[INF])}
(0...M).each{|m|
    a, b, c = gets.split.map(&:to_i)
    ma[a][b]=c
    ro[a][b]=[a]
    ma[b][a]=c
    ro[b][a]=[b]
}
(0...N).each{|i|
    (0...N).each{|j|
        (0...N).each{|k|
=begin
                    if i==5 && j==6 then
                        puts
                        puts "ma[#{i}][#{j}]=#{ma[i][j]}, ro[#{i}][#{j}]=#{ro[i][j].join(' ')}"
                        puts "ma[#{i}][#{k}]=#{ma[i][k]}, ro[#{i}][#{k}]=#{ro[i][k].join(' ')}"
                        puts "ma[#{k}][#{j}]=#{ma[k][j]}, ro[#{k}][#{j}]=#{ro[k][j].join(' ')}"
                    end
=end
            if (ma[i][k] + ma[k][j] < ma[i][j])  ||
                (ma[i][j]==ma[i][k] + ma[k][j] && (ro[i][k]+ro[k][j]).join("")<ro[i][j].join("")) then
                    ma[i][j] = ma[i][k]+ma[k][j]
                    ro[i][j] = ro[i][k]+ro[k][j]
            end
        }
    }
}
puts ro[S][G].join(" ") + " " + G.to_s
0