// プログラム2-6 の#include <iostreamの> 使用して名前空間STD; CONST INT INF = 0x3FFFFFFF ; のconst int型 N = 100 ; BOOL S [N]; int型最寄り[N]; int型低コスト[N]; ボイドプリム(INT N- 、INT U0、INT C [N] [N]) { // 頂点数N、頂点U0を開始、重み付け隣接行列C [N-] [N-] // iが記載されているのであれば、[I] = TRUE、頂点最小スパニングツリーに追加 // 頂点がUを設定し、そうでない場合、iがセットに属するVU頂点 //はアレイ低コスト関連する最小量の最終値通過 [U0] Sを= trueに ; // 最初に唯一の要素、すなわち頂点U0のUを設定 INT Iは、 INT 、J ため(I = 1、私は++; I <= N ) { IF(!I = U0) { 低コスト[I] = C [U0] [I]; 最寄り[I] = U0; S [I]が = falseに; } そうでなければ 低コスト[I] = 0 ; } ため(I = 1 ; I <= N - 、Iは++)// コレクション内のヴ頂点の最新のセットU Tから見ると { int型の TEMP =INF; INT T = U0; のため(J = 1。 ; J <= N; J ++ ) { IF((S [J])&&(低コスト[J] <!TEMP)) { T = J; TEMP = 低コスト[J ]; } } IF(T == U0) BREAKを ; //はTを見つけることができない、ループのうち S [T] = trueに、 // そうでない場合、Tは応力がU-設定添加される ため(Jは= 1。 ; J <= N; J ++ )// 更新低コストと最も近いです { 場合(!(S [J])&&(C [T] [J] < 低コスト[J])) { [J]低コスト =の[J] C [t]を。 最も近い[J] = T。 } } } } int型のmain() { int型nは、[N] [N]、C、M、U、V、W。 int型のU0。 COUT << " 输入结点数N和边数M:" << ENDL。 CIN >> N >> M。 int型 sumcost = 0 ; 以下のための(int型 I = 1; I <= N; I ++ ) のための(INT J = 1。 ; J <= N; J ++ ) C [I] [J] = INF; COUTが << " ノードの数U、V、および境界Wを入力してください" << ENDL; のための(INT I = 1 ; Iは<= M Iは++ ) { CIN >> U V >> W; C [U] [V] = C [V] [U] = W; } COUT << " 任意のノードU0を入力してください:" << てendl; CIN >>U0; // 和が最終lowcos、コストのすなわち最終所要最小和演算 (N、U0、C)プリム; COUT << " アレイ低コストの内容" << ENDLを、 ため(INT I = 1 ; I <= N-; I ++は) COUT <<低コスト[I] << " " ; COUT << ENDL; のための(INT I = 1 I <= N; I ++は) sumcost + = [I]低コスト COUT << " 最小コストは、次のとおりです。" << << sumcostendl; リターン 0 ; }