- 牛ティル帰ってきます
トピックへのリンク:https://vjudge.net/contest/66569#problem/A
トピック:
ベッシーは、フィールドに出ているとファーマージョンは朝の搾乳のために彼女を覚醒する前に、できるだけ多くの睡眠を得るために戻って納屋に取得したいです。ベッシーは彼女の美しさの睡眠を必要とするので、彼女は可能な限り迅速に戻って取得したいです。
ファーマージョンのフィールドは、その中にN(2 <= N <= 1000)ランドマーク、一意の番号1..Nを有しています。ランドマーク1は納屋です。ベッシーは終日立ったリンゴの木グローブランドマークN.牛はTランドマークとの間の種々の長さの(1 <= T <= 2000)双方向牛トレイルを使用してフィールドに移動されます。ベッシーは彼女のナビゲーション能力の自信を持っていないので、彼女はそれを開始したら、彼女はいつも最後までその開始から歩道にとどまります。
ランドマーク間の道を考えると、ベッシーが戻って納屋に取得するために歩く必要がある最小距離を決定します。
入力
ファーマージョンのフィールドは、その中にN(2 <= N <= 1000)ランドマーク、一意の番号1..Nを有しています。ランドマーク1は納屋です。ベッシーは終日立ったリンゴの木グローブランドマークN.牛はTランドマークとの間の種々の長さの(1 <= T <= 2000)双方向牛トレイルを使用してフィールドに移動されます。ベッシーは彼女のナビゲーション能力の自信を持っていないので、彼女はそれを開始したら、彼女はいつも最後までその開始から歩道にとどまります。
ランドマーク間の道を考えると、ベッシーが戻って納屋に取得するために歩く必要がある最小距離を決定します。
* 1行目:二つの整数:TとN
*線2..T + 1:各行は3スペースで区切られた整数として歩道を説明しています。最初の二つの整数は、TRAILが移動する間のランドマークです。第三の整数は、範囲1..100軌跡の長さです。
出力
*線2..T + 1:各行は3スペースで区切られた整数として歩道を説明しています。最初の二つの整数は、TRAILが移動する間のランドマークです。第三の整数は、範囲1..100軌跡の長さです。
* 1行目:単一の整数、ベッシーはランドマーク1のランドマークNから取得するために移動しなければならない最小距離。
サンプル入力
5 1 2 20 2 30 3 4 20 5 20 1 5 100サンプル出力
90ヒント
INPUTの詳細は:
5ランドマークがあります。
OUTPUTの詳細:
ベッシーは以下のトレイル4、3、2、1で家に帰ることができます。
5ランドマークがあります。
OUTPUTの詳細:
ベッシーは以下のトレイル4、3、2、1で家に帰ることができます。
質問の意味:
アイデア:次のように最短テンプレートエントリのタイトルは、spfaアルゴリズムは次のとおりです。
1307/5000
フィールドのベッシーは、私たちは彼女が朝の搾乳に目を覚ますだろうというとき、納屋に戻り、その後、ファーマージョンできるだけ多くをスリープ状態にしたいです。ベッシーは彼女の美しさの睡眠を必要とするので、彼女はできるだけ早く戻って来たいです。
ファーマージョン部位は、N(2 <= N <=有する 1000) ランドマーク、一意の番号を1..N。ランドマーク1つの納屋、牛立っベッシー日リンゴの木は、フィールドT(1 <= T <=走行時に使用されるN.ランドマークであり、 2000年) のランドマークとの間の様々な長さのシェルター双方向トレースを、。ベッシーナビゲートする彼女の能力で不信任ので、彼女は一度トラックの最初から最後まで維持している始めました。
ランドマークとの間の経路を考慮して、ベッシーは納屋に戻って行かなければならない最小の距離を決定します。これらの経路の一部が存在することを保証します。
入力
* 1行目の2つの整数:TおよびN.
*行2..T + 1:各列のトラックのスペースで分離された3つの整数を記述する。最初の二つは、整数トレイル旅行ランドマークです。第三のパスの整数の長さ、1..100の範囲です。
収量
*行1:ランドマークN 1ランドマークの整数、ベッシー最小距離が通過しなければなりません。
サンプル入力
5. 5
1 2 20である
2 3 30
3 20 4
4 5 20れる
。1. 5 100
出力のサンプル
90
ファーマージョン部位は、N(2 <= N <=有する 1000) ランドマーク、一意の番号を1..N。ランドマーク1つの納屋、牛立っベッシー日リンゴの木は、フィールドT(1 <= T <=走行時に使用されるN.ランドマークであり、 2000年) のランドマークとの間の様々な長さのシェルター双方向トレースを、。ベッシーナビゲートする彼女の能力で不信任ので、彼女は一度トラックの最初から最後まで維持している始めました。
ランドマークとの間の経路を考慮して、ベッシーは納屋に戻って行かなければならない最小の距離を決定します。これらの経路の一部が存在することを保証します。
入力
* 1行目の2つの整数:TおよびN.
*行2..T + 1:各列のトラックのスペースで分離された3つの整数を記述する。最初の二つは、整数トレイル旅行ランドマークです。第三のパスの整数の長さ、1..100の範囲です。
収量
*行1:ランドマークN 1ランドマークの整数、ベッシー最小距離が通過しなければなりません。
サンプル入力
5. 5
1 2 20である
2 3 30
3 20 4
4 5 20れる
。1. 5 100
出力のサンプル
90
// // 2019年7月14日に羽生によって作成されます。 // する#include <iostreamの> の#include <アルゴリズム> 書式#include <キュー> の#include <マップ> 書式#include <CStringの> の#include <cstdioを> 使用して 名前空間はstd; typedefの長い 長いLL。 #define MAX 0x3f3f3f3fは int型Tを、N。 const int型 MAXN = 1005 ; ブールブック[MAXN]。 int型のLU [MAXN] [MAXN]。 int型D [MAXN]。 ボイド spfa(INT A) { int型になりました。 memsetの(書籍、偽、はsizeof (書籍)); memsetの(D、MAX、のsizeof (d)参照)。 キュー < 整数 > QU。 D [A] = 0 ; ブック[A] = 真; qu.push(A)。 しばらく(!qu.empty()) { 今 = qu.front(); qu.pop(); ブック[今] = 偽; 以下のために(int型 i = 1 ; iが++; iが<= N ) { 場合(D [I]> D [今] + LUの[今] [I]) { D [i]は = D [今] + LU [今] [I]。 もし(!ブック[i])と { qu.push(I); この本は、[I] = 真; } } } } } int型のmain() { ながら(〜のscanf(" %d個の%のD "、&T、&N)){ ため(int型 i = 1 ; iが<= N; iが++ ){ 用(int型 J = 1 ; J <= I; J ++ ){ 場合(I == j)は LU [I] [J] = 0 ; 他の LU [I] [J] = LUの[jを] [i]は= MAX。 } } int型のX、Y、Z。 以下のために(int型 I = 1 ; I <= T; iは++ ){ scanf関数(" %D%D%D "、およびX&Y、およびZ)。 もし(Z < LU [X] [Y]) LU [X] [Y] = LUの[のY] [X] = Z; } spfa(1 )。 printf(" %d個の\ n " 、D [N])。 } 戻り 0 。 }