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 }