星に連鎖する前に、隣接テーブル

優れたオンタイムのパフォーマンスとメモリ性能スターへのベクタの隣接テーブルよりチェーンの前に。

次のテンプレートコードを参照するには元スターチェーンの使用:

#include <ビット/ STDC ++ H.>
 使用して 名前空間STD;
 のconst  int型 MAXN = 1E3 + 10 ; // 極大点
のconst  int型 MAXM = 1E6 + 10 ; // エッジの最大数
のstruct {ノードINTに、W、次に;}エッジ[MAXM ]; // 右側wは、端部に、エッジの集合、出発点の数の同じ側に次のものが
int型であり; n、mは、ヘッドが[MAXN] // 入力n点、mはエッジ
構造体 Chain_Forward_Star { // チェーンフォワード星
    INT CNT、
     無効 INITを(){ // 初期化 
        CNT = 0 ; 
        のmemset(頭、 -。1はsizeof(ヘッド)); //は初期化-1 
    }
     無効(ADDをINT U、int型 V、INT W){ // uは右側W、Vの端を開始、ボーダー 
        エッジ[CNT] .TO = V 、
        エッジ[CNT] .W = W、
        エッジ[CNT] .next =頭部[U]; // 同様に、uはナンバリングの片側に開始 
        ヘッド[U] = CNTは++; // 開始点Uと更新ナンバリングの一方の側
    } 
} CFS; 
int型のmain()
{ 
    int型U、V、W、
    CIN >> N- M; 
    CFS.init(); 
    のためのINT I =。1 ; I <= M; I ++ ){ 
        CIN >> U V W >>; // U点、V端、右側W出発
        CFS.add(U、V、W)を;
         // CFS.add(V 、U、W); 
    }
     のためのINT I = 1 ; I <= N; I ++は){ 
        COUT << I << ENDL;
         のためのINT J =頭部[I];〜J; J =エッジ[J]。次)// !1 - 〜J =すなわちJ、iはエッジから始まるトラバーサルを逆 
            COUT << I << '  ' <<エッジ[J] .TO << '  ' <<エッジ[J] .W < < てendl; 
        COUT << てendl;
    } 
    戻り 0
}

 

おすすめ

転載: www.cnblogs.com/HOLLAY/p/11517722.html