hdu 2767 強連通縮點

2021-06-07 23:16:56 字數 590 閱讀 4119

補最少的邊成強連通圖。

縮點後成dag,max即為所求。

#include #include #include #define mn 20020

#define me 200010

#define mm(a, b) (as;

void add_e(int i, int u, int v)

void tarjan(int i)

}else

if (instack[j] && low[i]>dfn[j])

}if (dfn[i]==low[i])

while (i!=j);

}}int main()

{ int t;

scanf("%d", &t);

while (t--)

{ scanf("%d %d", &n, &m);

clr(head, -1);

clr(instack, 0);

clr(dfn, 0);

clr(belong, 0);

while (!s.empty()) s.pop();

int u, v;

for (int i=0;i

HDU 2767 強連通縮點

如a能證明b 就建一條有向邊a b。對於乙個能互相證明的乙個集合,必然每個2個點都能相互到達,這樣的乙個集合就是乙個強連通集合。我們可以把他們看成乙個點,剩下的就是乙個dag圖了。如要都能相互到達,每個點必然出度 1,入度 1 所以統計有多少沒有入度的點和多少沒有出度的點,他們中最大的就是需要新增的...

hdu2767強連通加縮點

題目說了一大堆,前面的沒有用,就是讓你判斷要加幾條邊才能強連通,用到縮點的知識 二重迴圈,判斷鄰接表下乙個點是不是在強連通分量中,入度,出度分別儲存下來,輸出較大的那乙個 include include include include include include include include ...

hdu2767 強連通分量

hdu2767 proving equivalences 傳送門題意 給定乙個 n 1 leq n leq 20000 個頂點,m 0 leq m leq 50000 條邊的有向圖,至少新增幾條邊可以使得整個圖變成強連通圖?題解 強連通分量縮點,判斷每個點的出度或者入度是否為零,最終結果為出度為零的...