カット点:点xを除去し、非有向グラフは、2つ(またはそれ以上)に分割されています
2つ(またはそれ以上)に有向グラフを分割することなく、一方の縁xを削除:最先端
タイムスタンプ:数値は検索ツリーをトラバースDFN
回顧値:最小点へのサブツリーサブツリーと非探索木アップ
カットポイント決意と刃先
1 空隙 tarjan(int型のx、int型in_edge){ 2つの DFN [X] =低[X] = ++ NUM。 3 用の(int型 I =ヘッド[X]; I; I = NEX [I]){ 4 int型の Y = 版[I]; 5 もし(!DFN [Y]){ 6 tarjan(Y、I)。 7 ロー[X] = 分(低[Y]、[x]は低いです)。 8 もし(低[Y]> [X] DFN) 9 橋[I] =ブリッジは[I ^ 1 ] = 真。 10 } 他 もし(!I =(in_edge ^ 1 )) 11 の低[X] = 分(DFN [Y]、[x]は低いです)。 12 } 13 }
1 空隙 tarjan(INT X){ 2つの DFN [X] =低[X] = ++ NUM。 3 int型フラグ= 0 。 4 のための(int型 I =ヘッド[X]; I; I = NEX [I]){ 5 int型、Y = 版[I]; 6 もし(!{DFN [Y]) 7 tarjan(Y)。 8 低[X] = 分(低[Y]、[x]は低いです)。 9 もし(低[Y]> = DFN [X]){ 10 フラグ++ 。 11 もし(X!= 1|| フラグ> 1)[X] =切断真。 12 } 13 } そうでなければ低[X] = 分(低[x]は、DFN [Y])。 14 } 15 }
減少エッジ点:いいえ、DFSを使用して標識
ポイントポイント還元:%%%