poj2186 解題報告

2021-06-10 07:22:56 字數 1001 閱讀 3112

題意:有一些奶牛,他們之間有互相崇拜的關係,並且這個關係是有傳遞性的,求被所有奶牛崇拜的奶牛數量;

題解:先用強連通縮點,把強連通分量縮成乙個點,強連通中的點必然是互相崇拜的,然後再縮點後的圖中找

到出度為零的點,如果這些點的數量大於一,那麼必然沒有解,因為這些點直接沒有互相崇拜關係,如果只有

乙個點,那麼求出這個點對應的強連通分量裡面的點的個數就是答案了;

**搓了點:

#include #include #include using namespace std ;

const int maxn = 10005 ;

const int maxm = 50005 ;

struct type

;type edge[maxm] ;

int head[maxn] , low[maxn] , dfn[maxn] , stack[maxn] ;

int vis[maxn] , count , m , n , m ;

void addedge( int start , int end )

void dfs( int k , int lay , int &cnt )

if( dfn[k] == low[k] )

while(stack[m--] != k ) ;

}}int tarjan()

int main()

int temp = tarjan() ;

for( i = 1 ; i <= n ; i ++ )

}for( i = 1 ; i <= temp ; i ++ )

if( ans == -1 )

else if( outdex[i] == 0 ) ans = -2 ;

if( ans == -2 ) cout << 0 << endl ;

else cout << num[ans] << endl ;

return 0 ;

}

poj2186 解題報告

題意 有一些奶牛,他們之間有互相崇拜的關係,並且這個關係是有傳遞性的,求被所有奶牛崇拜的奶牛數量 題解 先用強連通縮點,把強連通分量縮成乙個點,強連通中的點必然是互相崇拜的,然後再縮點後的圖中找 到出度為零的點,如果這些點的數量大於一,那麼必然沒有解,因為這些點直接沒有互相崇拜關係,如果只有 乙個點...

poj 2186 強連通縮點

題意 有n只奶牛,奶牛有自己認為最受歡迎的奶牛。奶牛們的這種 認為 是單向可傳遞的,當a認為b最受歡迎 b不一定認為a最受歡迎 且b認為c最受歡迎時,a一定也認為c最受歡迎。現在給出m對這樣的 認為.的關係,問有多少只奶牛被除其本身以外的所有奶牛關注。思路 既然有單向傳遞關係,那麼關係圖可能就形成了...

POJ 2186 強連通分量

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