実際に、私は主にこのぶら下げについて読んでおきたいです。。実際、主に父親に息子を転送し、100×100 N *ツリーリュックことは明らかであり、かつ、正しい考え方をシフトアップ時に、このエッジの貢献、エッジの貢献を考慮することである(KJ)* jは* wが、それということです工場やサブツリー外。その後、判断は特場合、N = 2、N = 1、K = 1で十分であるのに注意すべきです。
<ビット/ STDC ++ H>の#include の#define PB一back の#define LL長い長 の#define MP make_pair の#define _min(x、y)は(x> = Y Y:X) 名前空間stdを使用。 CONST int型N = 1E5 + 7。 const int型M = 720; constのLL INF = 1E18; インラインチャーNC(){ 静的チャーBUF [100000]、* = BUF、*端= BUFを開始します。 場合(開始==端)始める= BUF、端= BUF +のfread(BUF、1,100000、STDIN)。 場合は、戻りEOF(==エンドを開始)。 ++ *返し始めます。 } テンプレート<型名T> インラインBOOL読み出す(T&X){ チャーC = NC()。 (C == EOF)がfalseを返す場合は、 X = 0。 一方、((> = '0' && C C <= '9' || C == ' - ')!)C = NC()。 ブールフラグ= C == ' - ' (C> = '0'ながら& (フラグ)は、x = -xであれば、 trueを返します。 } int型のT。 N INT、M、K。 LL DP [N] [105]。 int型のCNT; INT FIR [N]、NXT [N * 2]、[* 2 N]であり; LLヴァル[N * 2]。 ボイドadd_e(int型のx、int型のY、LLのW){ ++ CNT; NXT [CNT] =モミ[X];モミ[X] = CNT;に[CNT] = Y;ヴァル[CNT] = W。 ++ CNT; NXT [CNT] =モミ[Y];モミ[Y] = CNT; [CNT] = xと;ヴァル[CNT] = W。 } int型U、V、W。 INTデュ[N]。 INT LEF [N]。 ボイドDFS(int型のx、int型FA){ // COUT << X << "の\ n"。 もし(DU [X] == 1){ DPは、[X] [0] = DP [X] [1] = 0; LEF [X] = 1。 返します。 } DP [X] [0] = 0。 以下のために(INT i = 1; iは= Kを<; iは++)DP [X] [I] = INF。 以下のために(INT I = FIR [X]; I; I = NXT [I]){ int型V =乃至[I];(V == FA)が続けば、 DFS(V、X) [X] + = LEF LEF [V]。 QW LL =ヴァル[I]。 INT PQ =分(LEF [V]、K)。 用(INT R = _min(LEF [X]、K)であり; R> = 0; R - ){ ための(int型J = 0であり、j <= PQ && J <= R; J ++){ DP [X] [R] = _min(DP [X] [R]、DP [X] [RJ] + DP [V] [J] +(KJ)* jは*のQW)。 } } } } ボイドのinit()は{ フィル(FIR + 1、FIR + 1 + N、0); フィル(DU + 1、デュ+ 1 + N、0); //(; iが<= N; I = 1をint型私は++)のためのFIR [I] =デュ[I] =のLEF [I] = 0; CNT = 0; } メインINT(){ (T)を読み出します。 一方、(T - ){ int型CAS = 0; DP [ST] [K] << "の\ n"。 (n)を読み出す;(k)を読み出す;のinit(); {ため(; iがn <I ++はI = 1 INT) (U)を読み出す;(V)を読み出す;(W)を読み取ります。 add_e(U、V、W)。 デュ[U] ++;デュ[V] ++; } coutの<< "ケース#" << ++ CAS << ":"; IF(N == 1つの|| K == 1){ COUT << 0 << "の\ n"。 持続する; } IF(N == 2){ COUT << W << "の\ n"。 持続する; } ST = 0 int型。 以下のために{(INT i = 1; iは++; iが= N <) であれば(DU [I] = 1!){ST = I;ブレーク;} } DFS(ST、0); COUT << DP [ST] [K] << "の\ n"。