最初の接触グラフアルゴリズムは、サンプルをテストした後、タイトルによって書かれたが、後に常にエラー、最初にぶら下がっを促すように提出しました。。。バグを発見する際に知ってはいけません
(復帰前の最後のシステム(「休止」)は、内部対でデバッグするために使用されます)
ギャングの希望は(ちょうど今日のブログを適用)facie間違ったああを助けることができます
1つの#include <iostreamの> 2の#include <アルゴリズム> 3。 使用した 名前空間STD; 4 の#define INF 1001 5。 INT A [ 10000 ] [ 10000 ]; // マトリックス 6 BOOLの種類[ 10000 ]; // ノードのタイプを記録 7。 INT sort_array [ 10000 ]; 8 int型のmain() 9 { 10 INT N-、M、K; 11 CIN >> M >> N- K; 12である ため(INTI = 0 ; 私は、n <; I ++ ) 13 CIN >> 種類[I]。 14 のためには、(int型 = Iを0 ; iがn <; I ++ ) 15 のための(INT J = 0 ; J <N; J ++ ) 16の 場合(I == j)は 17 [I] [J] = 0 ; 18 他の 19 [I] [J] = INF。 20 21 // 创建图 22 のための(int型 I = 0 ; iが<M; iが++ ) 23は 、{ 24 INT P、Qは、R 25 CIN Q >> >> P R&LT; 26である [P - 1 ] [Q - 1 ] = R&LT; 27 A [Q - 1 ] [P - 1 ] = R&LT; 28 } // 隣接側重み付けの値ごとに 29 30 // 2点それぞれとの間の最短距離を計算するためにフロイドのアルゴリズム 31がある ため(INT K = 0 ; K <N-K ++ ) 32 のための(INT I = 0 ;私は<n-は、I ++ ) 33がある ため(のInt J = 0 ; Jが<N-、J ++ ) 34である { 35 IF([I] [K] + [K] [J] < 2003 && A [I] [K] + [K] [J] < [I] [J]) 36 A [I] [J] [I] [K] + = A [K] [J]を; 37 } 38は 39 のために(int型 I = 0、I <N - 、I ++ )// のmサイクルラウンドの合計 40 { 41は、 INTポインタ= 0 ; // 書き込みsort_arrayへのポインタ 42がある ため(INT J = 0; J < 10000 ; J ++ ) 43である { 44は sort_array [J] = INFと、 45 } // 最大値に初期化され、すべての 46である ため(INT J = 0 ; J <N-; J ++ ) 47 { 48 IF (一種[J] ) 49 { 50 sort_array [ポインタは] = [I]、[J]と、 51で ポインタ++ ; 52である } 53れる } // この時点で、アクティブノードはsort_array書き込み到達する最短距離た 54である 55 // ソート昇順使用ソート機能sort_array 56は (sort_array、sort_array +ソートポインタ); 57である INT SUM = 0 ; 58 のために(INT P = 0 ; P <K、P ++ ) 59 { 60 IF(sort_array [P] < = 1000年) 61である SUM + = sort_array [P]; 62である } 63れる COUT SUM << << ENDL; 64 } 65 システム(" PAUSE " ); 66 リターン 0 ; 67 }