コード:
#include <ビット/ STDC ++ H> の#defineは長い長いちゃう の#define MAXN 200004 名前空間stdを使用します。 setIO(文字列s){無効 "に" = S内の文字列+します。 freopenは(in.c_str()、 "R"、STDIN)。 }は N INT、M。 INT P [MAXN]、[MAXN]タグ。 {INITを無効() [I] = iがP(++ iは; iがMAXNを<I = 0をINT)ため、 } INT(INT X){見つける ?戻りP [X] == X X:Pは[X] =(P [X])を見つけます。 } 構造体のエッジ{ U、V、C int型。 } [MAXN]編。 BOOL CMP(エッジA、エッジB){ AC> BCを返します。 } int型のmain(){ // setIO( "入力")。 その中に(); scanf関数( "%d個の%のD"、&N、& (I 1 = int型; I <= M; ++ i)のためのscanf( "%D%D%D"、&ED [I] .U、&ED [I] .V、&ED [I] .C)。 ソート(ED + 1、ED + 1 + M、CMP)。 LL ANS = 0。 以下のために(INT I = 1; I <= M; ++ I){ 見つける= =検索(ED [I] .U)、BをINT(ED [I] .V)。 もし(!= B &&(タグ[A] ||タグ[B])!!)ANS + = 1LL *編[i]の.C、タグ[A] | =タグ[B]、P [B] =; それ以外の場合(!== bの&&タグ[A])ANS + = 1LL *編[i]の.C、タグ[A] = 1; } のprintf( "%I64dの\ n"、ANS)。 0を返します。 }