51nod1078 3條不相交的路徑

2021-10-21 17:53:05 字數 1877 閱讀 6201

題目**

**參考自洛谷p6658

這是一道三連通分量分解的模板提,具體的分析可以看洛谷的鏈結。

通過分解三連通分量以後,這道題就變成了簡單的並查集問題。

**中的ans即三連通分量分解後的結果。

/*

**大部分**自洛谷p6658的作者

這裡記錄的是三連通分量的模板

*/#include

#include

#include

#include

using

namespace std;

const

int maxn =

5e5+

100, maxm =

5e5+

100;

struct graph_t

void

addedge

(int u,

int v)};

struct union_find

intfind

(int x)

void

merge

(int u,

int v)};

int n, m;

graph_t gr;

class

two_edge_connect

else

low[u]

=min

(low[u]

, dfn[v]);

}if(low[u]

== dfn[u])}

}public

:void

init()

bool

isbridge

(int u,

int v)};

class

three_edge_connect

void

absorb

(vector<

int>

&path,

int u,

int w =0)

}void

dfs(

int u,

int fe, vector<

int>

&pu)

else

absorb

(pv, u);}

else

else

if(dfn[v]

< low[u])}

} end[u]

= dfc;

pu.push_back

(u);

}public

:void

init()

}}vector

int>

>

getall()

for(

int i =

0; i < n; i++)if

(res[i]

.empty()

==false

) ans.

push_back

(res[i]);

return ans;}}

;void

init()

}int fa[maxn]

;int

find

(int x)

void

join

(int x,

int y)

void

solve()

int q, a, b;

scanf

("%d"

,&q)

;while

(q--)}

intmain()

51NOD 1076 2條不相交的路徑

編輯 如果兩個頂點可以相互通達,則稱兩個頂點 強連通 strongly connected 如果 有向圖g的每兩個頂點都 強連通,稱g是乙個 強連通圖 有向圖的極大強連通子圖,稱為 強連通分量 strongly connected components 下圖中,子圖為乙個 強連通分量,因為頂點1,2...

51nod 1076 2條不相交的路徑

給出乙個無向圖g的頂點v和邊e。進行q次查詢,查詢從g的某個頂點v s 到另乙個頂點v t 是否存在2條不相交的路徑。兩條路徑不經過相同的邊 注,無向圖中不存在重邊,也就是說確定起點和終點,他們之間最多只有1條路 收起輸入 第1行 2個數m n,中間用空格分開,m是頂點的數量,n是邊的數量。2 m ...

51nod 1076 2條不相交的路徑(待完成)

1076 2條不相交的路徑 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 給出乙個無向圖g的頂點v和邊e。進行q次查詢,查詢從g的某個頂點v s 到另乙個頂點v t 是否存在2條不相交的路徑。兩條路徑不經過相同的邊 注,無向圖中不存在重邊,也就是說確定起點和終點...