図Tarjan&コミュニケーションのなし

カット点:点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を使用して標識

ポイントポイント還元:%%%

https://github.com/lydrainbowcat/tedukuri/blob/master/%E9%85%8D%E5%A5%97%E5%85%89%E7%9B%98/%E6%AD%A3%E6% 96%87%E5%8C%85%E5%を90%のAB%E7%9Aは%84%E7%A8%8B%E5%でのBAの%の8F%E7の%89%87%E6%AE%B5 /は0x66%20tarjan_dcc_euler。 CPP

おすすめ

転載: www.cnblogs.com/rign/p/11108844.html