題目**
**參考自洛谷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條不相交的路徑。兩條路徑不經過相同的邊 注,無向圖中不存在重邊,也就是說確定起點和終點...