さて、この質問は、少し何も言うことはありません....
そしてまた、それは取り除かスパニングツリーの最大の側の最大の波の中で、議論に大きな兄の始まりは、余分なエッジを持っていないだろう、後ろを振り返ると、リングが以下であるため、サイドの問題が発見され、最小ライン上にダウンサイド。
書式#include <cstdioを> する#include <CStringの> の#include <アルゴリズム> 使用して 名前空間はstdを、 const int型 MAXN = 100000 + 5、MAXM = 200000 + 5 。 int型N、M、ANS、ヘッド[MAXN]。 BOOL VIS [MAXM]。 構造体のエッジ{ int型U、V、W。 }エッジ[MAXM]。 BOOL CMP(CONSTエッジ&、constのエッジ&B){ 戻り AW> BW。 } int型の検索(INT X){ もし(x ==ヘッド[X])戻りX。 他の リターンヘッド[X] = 検索(ヘッド[X]); } int型のmain(){ int型X、Y。 一方、(〜のscanf(" %d個の%のD "、&N、&M)){ ANS = 0 。 memsetの(VIS、偽、はsizeof VIS)。 以下のために(int型私= 1 ; iが<= N; iが++ ){ scanf関数(" %D%D "、およびX&Y)。 ヘッド[i]は =私; } のために(int型 i = 0 ; iがmを<; iは++ ){ scanf関数を(" %D%D%D "、およびエッジ[I] .U、&エッジ[I] .V、&エッジ[I] .W) ; } ソート(エッジ、エッジ + M、CMP)。 int型 CNT = 0、NUM = 0 ; 以下のために(int型私= 0 ;私がm <; Iは++ ){ int型の FX =探す(エッジ[I] .U)、FY = (エッジ[I] .V)を探します。 もし(FX!= 年度){ CNT ++; ヘッド[FX] = FY。 VIS [i]は = 真; } であれば(CNT == N - 1)ブレーク。 } のための(int型 I = 0 ; iが<M; iが++ ){ 場合(!{VIS [i])と ANS + = エッジ[I] .W。 NUM ++ ; } } のprintf(" %D%D \ n " 、NUM、ANS)。 } 戻り 0 。 }