poj2186強連通分量

2022-09-03 16:12:17 字數 1208 閱讀 8120

這題。。。。。。。做了半天,倒是讓我更加了解了強連通分量,是我的第二道強連通。

石建讓我做一下這道題,我用模板再變形,改了很久之後,能給出的樣例都過了。

discussion上的樣例都過了,倒是上面n多人說資料沒過ac了。。。。。

你讓我們這資料過了沒ac的生活如何自理。。。

先放著,哪天有思路再來搞。。

/////////////重新做了一遍,發現之前的思路太亂了,整理之後水過了、、、、、、、、、、、、、

#include #include #include #include using namespace std;

#define maxn 50010

#define maxm 100010

struct edge

edge[maxm]; //邊結點陣列

int num[maxn];

int first[maxn], stack[maxn], dfn[maxn], low[maxn], belong[maxm];

// first頭結點陣列,stack為棧,dfn為深搜次序陣列,belong為每個結點所對應的強連通分量標號陣列

// low[u]為u結點或者u的子樹結點所能追溯到的最早棧中結點的次序號

int instack[10010]; // instack為是否在棧中的標記陣列

int n, m, cnt, scnt, top, tot;

void init()

void read_graph(int u, int v) //構建鄰接表

void tarjan(int v) //tarjan演算法求有向圖的強連通分量

else if(instack[j] && dfn[j] < low[v])

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

while(t != v); //直到將v從棧中退出

}}void solve()

int b1[maxn],b2[maxn];

int outdegree[maxn];

int main()

solve(); //求強連通分量

for(int i=1;i<=m1;i++)

int tmp=0;int k=0;

for(int i=1;i<=scnt;i++)

else if(tmp==1)

return 0;

}

POJ 2186 強連通分量

比較簡單吧。套模板。gabow include cstdlib include cctype include cstring include cstdio include cmath include algorithm include vector include string include io...

Poj 2186 強連通分量

題目大意 分析題解 個人 view code 1 10180085 perseawe 2186 accepted 1424k 79ms pascal 2645b 2012 05 10 19 54 27 23 var 4 n,m,tot,numofblocks,time,top longint 5 d...

poj2186 強連通分量 縮點

題意 如果a仰慕b,b仰慕c那麼a仰慕c,1 n同牛中求有多少頭牛被所有的牛仰慕。分析 若存在多個牛同時被所有的牛仰慕,那麼這些牛可以構成乙個強連通分量,那麼就可以把所有的強連通分量壓縮成乙個點,這樣這些點中只有處於葉子節點的強連通分量才有可能被所有的店點經過,而且是只有乙個葉子節點,這樣在求強連通...