對於有向圖的乙個頂點集,如果從這個頂點集的任何一點出發都可以到達該頂點集的其餘各個頂點,那麼該頂點集稱為該有向圖的乙個強連通分量。有向連通圖的全部頂點組成乙個強連通分量。
我們可以利用tarjan演算法求強連通分量。
#define n 1000
struct edge
e[100000];
int ec,pp[n],n;
int dfn[n],low[n],stack[n],index,top,cnt;
bool instack[n];
setset[n];
void tarjan(int u)
{ int i,j,k,v;
dfn[u]=low[u]=++index;
stack[++top]=u;
instack[u]=true;
for(i=pp[u];i!=-1;i=e[i].next)
{v=e[i].to;
if(!dfn[v])
{tarjan(v);
if(low[v]
強連通分量 tarjan求強連通分量
雙dfs方法就是正dfs掃一遍,然後將邊反向dfs掃一遍。挑戰程式設計 上有說明。雙dfs 1 include 2 include 3 include 4 include 5 6using namespace std 7const int maxn 1e4 5 8 vector g maxn 圖的鄰...
強連通分量
在有向圖g中,如果兩個頂點間至少存在一條路徑,稱兩個頂點強連通 strongly connected 如果有向圖g的每兩個頂點都強連通,稱g是乙個強連通圖。非強連通圖有向圖的極大強連通子圖,稱為強連通分量 strongly connected components 下圖中,子圖為乙個強連通分量,因為...
強連通分量
include include include using namespace std typedef struct link graphiclink graphic,plink graphic typedef struct queuequeue void init queue queue 佇列初始...