タイトル説明
私たちは診察室(拷問?)でテストに入れた場合、シャオ大はゲームの「初期夢」と呼ばれる遊びに(Qianbian)ゆったりです。呼ばれる志望ティーンエイジャーのゲームの説明は、異なる時間と空間における伝説的な悪魔chinesesonic物語の対決を通過します。シャオ大は、ゲームデザインプロセスの物語は、それが物語の枝をたくさん持っている、非常に複雑ですが、話は異なるブランチを同時に行うことができるので、ゲームは物語の終点と一部である必要がありますいくつかのプロットの構成の話することができました特定のプロットの終了後に開発を継続します。すべてのタスクを完了するために - ゲームの整合性を体験するためには、シャオ大は物語のすべてのブランチを見ることにしました。しかし、これはXiaodai貴重な睡眠時間を遅らせていないのだろうか?だから私はこの問題を解決するために、あなたを尋ねました。
入力形式
シャオ大は、あなたの話の流れやクロージング条件のリストが表示されます
前記第一の行番号N(0 <N <100)であり、nの合計は、プロットの終了点を表します
第2の行数m(0 <M <= 120)、m個の異なるストーリーで発現しました
I(0 <iが<= 100)、J(0 <J <= 100)、K 3つの数字の各列の次のm行目(0 <K <= 1000)、私はコストを完了する必要がありプロットエンドポイントから示し物語jの終点に到達するためのk個のお話の時間。
出力フォーマット
多くの時間Xiaodaiがゲーム全体を完了し、(昇順出力に)すべての可能なプロットのエンドポイントを通過するには、少なくとも必要があるかを教えてくれます。
サンプル入力と出力
入力#1
4 5 1 2 2 2 3 2 3 5 3 1 4 3 4 5 3
出力#1
7 1 2 3 4 5
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #define N 120 + 1 INT [N] [N] F、N、M。 INT メイン() { CIN >> N >> M。 以下のために(int型 I = 1 ; I <= M; iは++ ) { int型のX、Y、Z。 CIN >> X >> Y >> Z。 F [X] [Y] = Z; } N ++ 。 用(int型のk = 1 ; K <= N; kは++ ) のための(INT I = 1; I ++; iが<= N ) のための(INT J = 1 ; J <= N; J ++ ) 場合(I = J && I = K && J = K && F [i]が[K] &&!!F [k]は[J]) F [I] [J] = MAX(F [I] [J]、[I] [K] + F F [k]は[J])。 COUT [F << 1 ] [N] << ENDL。 以下のために(int型 i = 1 ; iが<= N; iが++ ) 場合([F 1 ] [I] + F [i]が[N] == F [ 1 ] [N]) COUT << I << " " 。 coutの << てendl;