1. 程式人生 > >tarjan求強連通分量專題

tarjan求強連通分量專題

定義:
對於有向圖上的2個點a,b,若存在一條從a到b的路徑,也存在一條從b到a的路徑,那麼稱a,b是強連通的。
對於有向圖上的一個子圖,若子圖內任意點對(a,b)都滿足強連通,則稱該子圖為強連通子圖。
非強連通圖有向圖的極大強連通子圖,稱為強連通分量。
單獨的點也可以是強連通分量
學習部落格:https://www.byvoid.com/zhs/blog/scc-tarjan

下面給幾個例題
1.hihocoder 1185 || swjtu16年校賽G題
求有向圖從點1開始走得到的最大點權和

2.poj 2186 Popular Cows

題意:在有向圖中找一些點能由其他所有點到達
思路:這些點肯定要滿足出度為0,在同一個強連通分量裡面,所有先用Tarjan縮點,然後統計出度為0的強連通分量個數,大於1就不滿足條件。
(此題還用了個定理 :有向無環圖(DAG)中,從任意一個點出發,必定可以到達某一個出度為0的點。)
所以等於1的時候統計這一個強連通分量裡點的個數。