優れたオンタイムのパフォーマンスとメモリ性能スターへのベクタの隣接テーブルよりチェーンの前に。
次のテンプレートコードを参照するには元スターチェーンの使用:
#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。 }