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是個甜...