图论知识点
欧拉路径|回路
经过每条边恰好一次的路径
无向图的欧拉路径:两个点(或 0 个点)度数为奇数,其余点(或所有点)度数为偶数
有向图的欧拉路径:一个点的出度等于入度 + 1, 一个点的入度等于出度 + 1
无向图欧拉回路:所有点的度数为偶数
有向图欧拉回路:所有点的入度等于出度且联通
Hierholzer算法
void dfs(int u){//s1~sn中存储的是欧拉路径上的点序列
for (int v = 1; v <= n; v++){
if (mp[u][v] > 0){
mp[u][v]--,mp[v][u]--;
dfs(v);
}
}
s[temp--] = u;
}
强联通分量
有向图中互相可达的极大子图
\(tarjan\) 判就好了
边点双联通
在一张连通的无向图中,对于两个点u和v,如果无论删去哪条边(只能删去一条)都不能使它们不连通,我们就说u和v边双连通 。
在一张连通的无向图中,对于两个点u和v,如果无论删去哪个点(只能删去一个,且不能删 和 自己)都不能使它们不连通,我们就说u和v点双连通 。
边双连通分量定义:在分量内的任意两个点总可以找到两条边不相同的路径互相到达。总而言之就是一个圈,正着走反着走都可以相互到达,至少只有一个点。
点双连通分量定义:任意两个点可以找到一条点不同的路径互相到达。也是一个圈,正反走都可以,至少为一个点。