ヘイPOJ 2395(最小スパニングツリー)のうち、

オリジナルタイトル

トピックリンク

トピック分析

一見すると、あなたが表示されない場合があります最小スパニングツリーですが、実際に自然の最小スパニングツリーを満たすために必要な主題について考え、これだけ追求する過程でツリーエッジを最小全域スパニングツリープリム、記録最小を計算する必要がありますあなたができる最大値。

コード

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対< INTINT > 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 }

 

おすすめ

転載: www.cnblogs.com/VBEL/p/11419529.html