![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论————欧拉回路
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
hdu2894// 算法竞赛——进阶指南——acwing 400. 太鼓达人 欧拉回路经典题 //欧拉回路的建模小结
无向图的欧拉回路:1.图连通;2.图所有点度数均为偶数;//欧拉路径要求起点和终点度数为奇数;有向图的欧拉回路:1.图连通;2.图所有点入度等于出度;//欧拉路径要求起点入度=出度-1,终点入度=出度+1;欧拉回路:通过图中每条边一次且仅一次,并且过每一顶点的回路。关键词是:每条边仅经过一次。也就是说如果一道题建图后,要求一条回路(路径),每条边经过且仅经过一次。回到这道题:显然长度为2^k。网上看到的题解只有这个讲的是正确的。https://b.原创 2020-07-04 19:17:38 · 240 阅读 · 0 评论 -
算法竞赛——进阶指南——acwing399. 约翰的旅行 欧拉回路+最小字典序边 打印
只要弄懂欧拉回路的原理,即dfs找回路。就能轻松的写出这题。题目要求字典序最小。那么我们就无法让head[x]=i,加速找欧拉回路的过程。老老实实的0(n*m)的算法遍历最小边权即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst d.原创 2020-07-03 21:00:00 · 214 阅读 · 0 评论 -
算法竞赛——进阶指南——acwing366. 看牛 欧拉回路
这题要求每条边正反各被走一次,求一条路径。每条边正反各走一次的话,对度数就没有要求了,即任意图都可构造出一条题意路径。打印过程类似欧拉回路的过程,dfs时记录经过点数。不过这里vis标记只标记访问的单向边。/*必须满足所有度数都为偶数有且仅有2个度数为奇数时,存在欧拉路径*/#include<bits/stdc++.h>using namespace std;const int M =2e5+7;int head[M],cnt;struct EDGE{int to原创 2020-07-03 19:17:32 · 178 阅读 · 0 评论