kosaraju演算法應用(一)

2021-07-02 19:05:03 字數 830 閱讀 9766

poj 2186

解題思路:

kosaraju演算法,本以為要縮點,但是題目只要求找到拓撲排序的乙個唯一的頭,可以水過——通過計算強連通分量的出度。

**:

#include 

#include

#include

#include

#include

using

namespace

std;

int n,m,v[10005],num[10005],cnt,scc,out[10005],ans[10005];

vector

vec[10005];

vector

nvec[10005];

void dfs(int index)

void ndfs(int index)

int main()

memset(v,0,sizeof(v));

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

if(!v[i])

dfs(i);

memset(v,0,sizeof(v));

for(int i=cnt;i>=1;i--)

}memset(out,0,sizeof(out));

int res=0,count=0;

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

}for(int i=1;i<=scc;i++)

printf("%d\n",res);

}return

0;}

下次講縮點~

班長競選 Kosaraju演算法

題意 大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?input 本...

Kosaraju縮點演算法詳解

相對於tarjan演算法,kosaraju演算法更容易理解,原理非常簡單,就是對一張有向圖進行兩次dfs遍歷。下面我們用一張圖作為例項,講解kosaraju演算法的實現過程 這是一張有向圖,對於強連通分量,我們一眼就看出來了,而機器有沒有眼睛,那怎麼識別呢?首先我們以從一號到五號節點順序進行dfs,...

Tarjan演算法 kosaraju小證明喲

看的別人寫的 很好,摘要幾點的啦 一.概念 1.強連通 如果在乙個有向圖上兩個結點u,v他們相互之間至少存在一條通路,則他們是強連通的.2.強連通圖 如果有向圖g任意兩天都強連通,則g是強連通圖.3.強連通分量 有向非強連通圖的極大強連通子圖.二.o n m 的trajan,特麼的trajan是個甜...