poj 2186 強連通縮點

2021-09-08 16:58:16 字數 904 閱讀 1410

題意:

有n只奶牛,奶牛有自己認為最受歡迎的奶牛。奶牛們的這種「認為」是單向可傳遞的,當a認為b最受歡迎(b不一定認為a最受歡迎),且b認為c最受歡迎時,a一定也認為c最受歡迎。

現在給出m對這樣的「認為...」的關係,問有多少只奶牛被除其本身以外的所有奶牛關注。

思路:既然有單向傳遞關係,那麼關係圖可能就形成了環,乙個環內的奶牛互相認為。如果把這些環用乙個點代替的話,建反圖,就成了乙個有向無環圖了,直接遍歷求出入度為0的點有多少個子節點就可以了。

#include#include#includeusing namespace std;

const int n=10010;

int low[n],dfs[n],ans,idx,cont[n],head[n],num,indep[n],belong[n],sum;

bool ins[n];

stackq;

struct edge

e[n*10];

void addedge(int x,int y)

void tarjan(int u)//縮點

else if(ins[v]==1)

low[u]=low[u]>dfs[v]?dfs[v]:low[u];

} if(dfs[u]==low[u])

while(v!=u);

ans++; }}

int dfs(int u)

return temp+cont[u];//子節點+自己環內的所有點

}int main()

{ int i,n,m,x,y;

while(scanf("%d%d",&n,&m)!=-1)

{ memset(head,-1,sizeof(head));

num=0;ans=idx=0;

for(i=0;i

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的生活如何自理。先放著,哪天有思路再來搞。重新做了一遍,發現之前的思路...