あらすじ
(実話)
とても落ち込んだが、壊れてしまったものは仕方がない。新規一転、新しいマザーボードを買ういい機会だと思って積極的に見ることにした。幸い、うちの近くにはドス〇ラやナ〇シマなどのPC専門店がある。せっかく買うのだから同じマザーボードでも安いマザーボードを買いたい。なので付近にある全部のpc専門店を回ることにした。しかし、全部の店を回るのは時間がかかるので最短経路で回りたい。マザーボードを壊し、落ち込んでるei1719のために自宅からすべての店を回り、自宅へ戻ってくるまでの最短経路を教えてあげよう!
問題
n個の店、およびm本の道がある。
自宅から開始し、すべての店に行き、自宅に戻るまでの最短経路の距離を求めよ。
ただし、一つの店は一回しか通ってはならない。
また、道はすべて一方通行であり、逆方向には移動できないことに注意せよ。
入力例
入力は複数の行からなる
n m s1 e1 d1 s2 e2 d2 : sn en dn
一行目に、店の数nと道の数mが与えられる。
二行目からm行にわたり店sから店eへの移動距離の情報が与えられる。
i番目は、店siから店eiにdiの距離があることを示す。
出力
自宅から、すべての店を行き、自宅に戻る最短経路の距離を出力せよ
そのような経路がない場合は、-1を出力せよ
制約
- 0 < n < 15
- 0 < m ≦ 210
- 0 ≦ d ≦ 1000
- 0 ≦ s,e ≦ n
- si ≠ ei
- すべての道において、s,eが全く同じになる道は存在しない。
s,eは0が自宅を表し、1~nがそれぞれの店を表す。
入出力例
入力例2
3 9 0 1 2 0 2 8 1 2 3 1 3 9 2 0 1 2 1 16 2 3 6 3 2 4 3 0 1
出力例1
12
解説
自宅(0)→1→2→3→自宅(0)の順で通れば、最短で通ることができる。入力例2
4 8 0 1 5 1 0 3 0 2 10 1 2 3 2 3 5 0 3 1 0 4 2 3 4 9
出力例2
-1
入力例3
4 11 0 3 9 4 3 1 3 1 8 2 1 3 1 3 5 0 2 9 4 0 1 3 4 0 2 0 1 1 0 3 4 2 10
出力例3
18