其他分享
首页 > 其他分享> > 欧拉回路学习笔记

欧拉回路学习笔记

作者:互联网

\[\huge \rm 欧拉回路 \]


\[\Large \rm 算法简介 \]

\(\large\rm 定义\)

\(\large\rm 判定\)

\(\quad\)由于每一条边都要经过恰好一次,因此对于除了起点和终点之外的任意一个节点,只要进来,一定要出去。

\(\large\rm 求解\)

\(\quad\)用 \(\rm dfs\) 算法求出一张图的欧拉回路 。

\(\quad\)给每一条边记一个 \(\rm vis\) 数组,表示其是否被访问,然后从一个点出发,遍历所有的边。

\(\quad\)直接 \(\rm dfs\) 的话可能会有一些点无法被遍历到,于是在记录答案的时候可以倒着记录,即当通过 \(u\to v\) 这条边的时候,可以先将点 \(v~\rm dfs\) 完,再加入 \(u\to v\) 这条边 。

\(\large \rm 实现\)

void dfs (int u) {
    for (int i = last[u]; i; i = Next[i]) {
        if (vis[i]) continue;
        vis[i] = true;
        int record = i;
        dfs(to[i]);
        Sta[++top] = Record;
    }
}

标签:dfs,当且,large,笔记,回路,rm,欧拉
来源: https://www.cnblogs.com/C-C-A/p/15047342.html