思路:(1)這道題的圖可能不連通,所以需要多次tarjan;
(2)設定cut[i]=x陣列表示第i個節點被刪除後右多少個子圖(這個只是在乙個圖中),如果是根節點就要-1,因為根節點都滿足
num[v]==low[u].
(3)mx的初始值設為最小值(-9999999),因為有可能cur[i]=-1,存在根節點所在的圖是雙聯通圖。
參考文章:傳送門
#include#includeview code#include
#include
#include
using
namespace
std;
const
int maxn = 100100
;int
num[maxn],low[maxn],cut[maxn],tim;
vector
vc[maxn];
void
init()
void tarjan(int u,int
pre)
else
if(pre!=v) low[u]=min(low[u],num[v]);
}}int main(void
)
int cnt=0,mx=-99999999
;
for(i=0;i)
if(!num[i])
for(i=0;imax(mx,cut[i]);
printf(
"%d\n
",mx+cnt);
}return0;
}
刪邊求概率
wnjxyk和dididi正在玩遊戲。dididi在紙上繪製乙個有向圖g,該圖包含n個點,m個有向邊且無迴圈。wnjxyk從點1開始。每回合,wnjxyk將隨機選擇從當前點開始的有向邊之一,其可能性均等,然後從該邊轉到下乙個點。遊戲將繼續,直到沒有這種優勢為止。dididi將把寶藏放在點n上,如果w...
刪選法求素數
今天跟隨周老師學到了乙個新的求素數的方法,按照老師的程式設計方法,比較簡單的就求得了素數,以下 中,有乙個方法是自己寫的,乙個是按照老師的思路來的 include stdafx.h include define nrange 40000 找出40000以內的素數 篩法 4203 void findp...
loj 篩法求幸運數
問題描述 幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的 篩法 生成 首先從1開始寫出自然數1,2,3,4,5,6,1 就是第乙個幸運數。我們從2這個數開始。把所有序號能被2整除的項刪除,變為 1 3 5 7 9 把它們縮緊,重新記序,為 1 3 5 7 9 這時,3為第2個幸運數,然後把所...