この質問は、interviewstreet.com から見つけました。
マシンが再びシオンの王国を攻撃しました。Xions 王国には、N 個の都市と N-1 個の双方向道路があります。道路網は、都市の任意のペア間に固有の経路があるようなものです。
モーフィアスは、K マシーンが王国全体を破壊する計画を立てているというニュースを受け取りました。これらのマシンは当初、王国の K 個の異なる都市に住んでおり、いつでも攻撃を計画して開始できます。そのため、彼はネオにいくつかの道路を破壊してマシン間の接続を中断するように依頼しました。つまり、これらの道路を破壊した後は、2 つのマシン間にパスがあってはなりません。
攻撃は今からいつでも可能であるため、ネオはこのタスクをできるだけ早く実行する必要があります. 王国の各道路は破壊されるまでに一定の時間がかかり、一度に 1 つしか破壊できません。
マシン間の接続を切断するのに必要な最小時間を Neo に伝えるプログラムを作成する必要があります。
サンプル入力 入力の最初の行には、スペースで区切られた 2 つの整数 N と K が含まれます。都市には 0 から N-1 の番号が付けられます。次に、それぞれがスペースで区切られた 3 つの整数 xyz を含む N-1 行をたどります。これは、都市 x と都市 y を結ぶ双方向の道路があることを意味し、この道路を破壊するには z 単位の時間がかかります。次に、それぞれが整数を含む K 行をたどります。i 番目の整数は、i 番目の Machine が現在位置している都市の ID です。
出力形式 マシン間の接続を中断するのに必要な最小時間を 1 行で出力します。
サンプル入力
5 3 2 1 8 1 0 5 2 4 5 1 3 4 2 4 0
サンプル出力
10
説明 Neo と重み 5 の都市 2 と都市 4 を結ぶ道路、および重み 5 の都市 0 と都市 1 を結ぶ道路を破壊できます。一度に破壊できる道路は 1 本だけなので、合計で最小時間は 10 単位時間です。 . これらの道路を破壊した後、マシンはどのパスからでも他のマシンに到達できなくなります。
制約
2 <= N <= 100,000 2 <= K <= N 1 <= time to destroy a road <= 1000,000
誰かが解決策にアプローチする方法を教えてもらえますか?