題意:如果a仰慕b,b仰慕c那麼a仰慕c,1~n同牛中求有多少頭牛被所有的牛仰慕。
分析:若存在多個牛同時被所有的牛仰慕,那麼這些牛可以構成乙個強連通分量,那麼就可以把所有的強連通分量壓縮成乙個點,這樣這些點中只有處於葉子節點的強連通分量才有可能被所有的店點經過,而且是只有乙個葉子節點,這樣在求強連通分量的過程中可以對這些點進行標記,最終就可以找到了。目前只學會了這乙個演算法,**如下。
#include #include #include #include using namespace std;
#define ll long long
int a[7];
const int maxn = 10000 + 5;
struct eageeage1[maxn*5], eage2[maxn*5];
int vis[maxn];
int head1[maxn], head2[maxn], lis[maxn];
int n, m, cnt1, cnt2, t;
void add(int x, int y)//建立正向圖和反向圖
void dfs1(int u)//類似於拓撲排序
lis[t++] = u;//將拓撲排序的結果從放到棧中,從結尾到開頭
}void dfs2(int u, int t)
}int main()
memset(vis, 0, sizeof(vis));
t = 0;
for (int i = 1; i <= n; i++)
memset(vis, 0, sizeof(vis));
int ans = 0;
for (int i = t-1; i >= 0; i--)
}int cnt = 0, u = 0;
for (int i = 1; i <= n; i++)
}memset(vis, 0, sizeof(vis));
dfs2(u, 1);
for (int i = 1; i <= n; i++)
}cout << cnt << endl;
return 0;
}
kosaraju
kosaraju
kosaraju
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強連通分量
這題。做了半天,倒是讓我更加了解了強連通分量,是我的第二道強連通。石建讓我做一下這道題,我用模板再變形,改了很久之後,能給出的樣例都過了。discussion上的樣例都過了,倒是上面n多人說資料沒過ac了。你讓我們這資料過了沒ac的生活如何自理。先放著,哪天有思路再來搞。重新做了一遍,發現之前的思路...