プリム最小スパニングツリーアルゴリズムの重み

1  // ツリーアルゴリズムの重みにまたがる図プリム最小に求めなし
2  
。3の#include <入出力ストリーム>
 4。の#include <CStringの>
 5。 使用した 名前空間STDを、
 図6  の#defineのINF 0x3f3f3f3f
 。7  INTマップ[ 505 ] [ 505 ];
 8  BOOL訪問[ 505 ];
 9  INT低コスト[ 505 ];
 10  INTプリム(INT N-)
 。11  {
 12は     INT ANS = 0 、I、J、
 13である      のmemset(訪問、falseにはsizeof (訪問)); 
 14      ログイン[ 1。 =] trueに ;    // プリムアルゴリズムが選択ポイント点から始まる1。
15      のために(私は= 2 ; I ++); I <= N   // 開始点から2〜図1は、低コストにかかる
16          [I] =マップ[低コスト1 [I]];
 17      のための(私は= 2、I <= N; I ++ 18である     {
 19。         // 最小のコストは、現在の設定点を選択した検索
20          INT分= INF、P;
 21である         ため(J = 2、J <= N; J ++ 22は、             IF(!ログイン[J]が&&低コスト[J] < 分)が
 23である             {
 24                  分= 低コスト[J];
 25                  P = J;
 26である             }
 27は、         IF(分== INF)// ない最小と通信していない何点が記載されていない場合スパニングツリー、-1を返す
28              リターン - 1。;
 29          // コストプラスこの最小コスト
30          ANS + = 分;
 31である         // 選択されたセットポイントが追加される
32          ログイン[P] = trueに33である         ため(J = 1。 ; J <= N; J ++ 34は、             IF(!訪問[J] &&低コスト[J]>は、[P] [j]をマップする)
 35                  低コスト[j]を= [P] [j]をマッピングします。
36      }
 37      リターンANS。
38  }
 39  のint main()の
 40  {
 41      INT N、M。
42      CIN >> N >> M。
43      のmemset(マップ、INF、はsizeof (マップ))。
44      のためにINT iは= 1 ; iが<= N; I ++ 45      {
 46          INT U、V、W。
47          CIN >> U >> V >> ワット。
48         マップ[U] [V] = W。
49の          マップ[V] [U] = W。
50      }
 51      COUT <<プリム(M)<< ENDL。
52      リターン 0 53 }

 

おすすめ

転載: www.cnblogs.com/sqdtss/p/12348974.html