オリジナルタイトル
トピック分析
一見すると、あなたが表示されない場合があります最小スパニングツリーですが、実際に自然の最小スパニングツリーを満たすために必要な主題について考え、これだけ追求する過程でツリーエッジを最小全域スパニングツリープリム、記録最小を計算する必要がありますあなたができる最大値。
コード
1の#include <iostreamの> 2の#include <アルゴリズム> 3の#include <ユーティリティ> 4の#include <cstdioを> 5の#include <cmath> 6の#include <CStringの> 7の#include < ストリング > 8の#include <ベクトル> 9# <積層体>含む 10の#include <キュー> 11の#include <地図> 12 <の#include 設定 > 13 14 使って 名前空間STDを、 15 typedefの長い 長いLL。 INF_INT = 0x3f3f3f3f 。 17 CONST LL INF_LL = 0x3f3f3f3f3f3f3f3f 。 18 19のtypedef対< INT、INT > P。 20 int型N、M。 21 INTのエッジ[ 3000 ] [ 3000 ]。 22 INT使用[ 3000 ]。 23の int型のANS; 24 25 ボイドプリム() 26 { 27 PRIORITY_QUEUE <P、ベクトル<P>、大きな<P>> QUE。 28 のための(int型i = 1 ; iは= <N; iは++ ) 29 であれば(エッジ[ 1!] [I] = INF_INT)que.push(P(エッジ[ 1 ] [i]は、I))。 30 [使用1 ] = 真。 31 一方(que.size()) 32 { 33 P、P = que.top(); que.pop()。 34 であれば(使用[p.second])続けます。 35 [p.second] =使用真。 36の ANS = MAX(ANS、p.first)。 37 のために(int型 i = 1 ; iが<= N; iが++ ) 38 であれば(エッジ[p.second] [I] = INF_INT &&!que.push [i]を使用)(P(エッジ[p.second] [i]は、I))。 39 } 40 } 41 42 のint main()の 43 { 44 // freopenは( "black.in"、 "R"、STDIN)。 45 // freopenは( "black.out"、 "W"、STDOUT)。 46 CIN >> N >> M。 47 のためには、(int型 i = 1 ; iは= <N; I ++ ) 48 のための(INT J = 1 ; J <= N; J ++)エッジ[I] [J] = INF_INT。 0 ; I <M; iが++ ) 50 { 51 int型A、B、C。 52 のscanf(" %D%D%D "、&、&B、&C)。 53 エッジ[A] [B] = 分(エッジ[A] [B]、C)。 54 エッジ[B] [A] = 分(エッジ[B] [A]、C)。 55 } 56 プリム()。 57 のprintf(" %d個の\ n " 、ANS)。 58 リターン 0 ; 59 }