書式#include <iostreamの>
の#include <cstdioを>
する#include < 文字列の.h>
の#include <アルゴリズム>
使用して 名前空間はstdを、
構造体P
{
int型のX;
int型のyを。
int型のトン。
} ZYF [ 200001 ]。
BOOL CMP(P XXを、PのY-Y)
{
戻り xx.t < yy.t。
}
int型の合計= 0、和= 0 。
INT FA [ 5001 ]、Z、N、M、A、B、K。
INT getfather(INT W)
{
もし(FA == [W] w)の
リターン; W
FA [W] = getfather(FA [W])。
戻りFAを[W]。
}
ボイド一緒に(int型 Uを、INT O)
{
FA [getfather(U)] = getfather(O)
}
int型のmain()
{
// freopenは( "テストデータ(23).IN"、 "R"、STDIN)。
CIN >> N >> M。
以下のために(int型 iは= 1 ; iがn = <; iは++ )
{
FA [I] = I。
}
のために(int型のI =1 ; I <= M; iは++ )
{
CIN >> ZYF [I] .X >> ZYF [I] .Y >> ZYF [I] .T。
}
ソート(ZYF + 1、ZYF + M + 1 、CMP)。
以下のために(int型 I = 1 ; I <= M; iが++ )
{
場合(getfather(ZYF [I] .X)=!getfather(ZYF [I] .Y))
{
一緒に(ZYF [I] .X、ZYF [ I] .Y)。
和 + = ZYF [I] .T。
用(INT J = 1 ; J <= nであり、j ++ )
{
int型 CC =getfather(J)。
もし(CC == j)の
合計 ++ ;
}
であれば(全== 1 )
ブレーク。
合計 = 0 ;
}
}
もし(合計== 1 )
COUT << 和。
他の
{
裁判所未満 << 「ORZ 」。
}
戻り 0 。
}
夏の十四日までに2019年9月9日