スパニングツリーのために、我々は、プロセスの一の側の縁が増加する生成ので、我々は、エッジトラバーサルを構築するパス[]を使用し、その後、我々は側に選択したものを記録する[]のパスの配列を作成する必要があります。
レコードセクション:
ボイドクラスカル() { int型 NUM = 0、J = 0 。 以下のために(int型 i = 1 ; iは= N <; ++ I)F [I] = I。 以下のために(int型 iは= 1 ; iが<= M + I) { int型 EU =検索(エッジを[I] から)。 INT EV = (エッジ[I] .TO)を見つけます。 もし(EU ^ EV) { [EU] F = EV。 パス[ ++ J = エッジ[I]。 NUM ++ ; } もし(NUM == N- 1)破ります。 } 最終 = J。 }
トラバースセクション:
以下のために(int型 i = 1 ; iは=最終<; ++ I)addedge(パス[I] からパス[I] .TO、)、addedge(パス[I] .TO、経路[I] から)。 VIS [ 1 ] = 1 。 get_col(1、1 )。 ボイド get_col(int型のx、int型のC) { COL [X] =のC。 用(int型 ; I iが= I =ヘッド[X] _EDGE [i]は.next) 場合(!VIS [_EDGE [I] .TO]) { VIS [_EDGE [I] .TO] = 1。 get_col(_EDGE [I] .TO、C ^ 1 )。 } } ボイド addedge(INT から、INT に) { [_EDGE ++ num_edge]。= から。 【num_edge] .TO _EDGE = であり; 【num_edge] .next _EDGE [=ヘッドから]。 【ヘッドから =] num_edge。 }