luogu 1314 欧拉回路
欧拉路径:一笔画的路径
欧拉回路:一笔画的回路
两者判断方法一样但是输出略有不同。并且还有Fleury(弗罗莱)算法,但是我不会。.
这里就用dfs就好
判断条件:
1)图的连通性(可用并查集判断)
2)无向/有向的路径/回路拥有的特性
思路:1)寻找连边,有的话继续深搜
2)无连边的话,入栈/输出
回路 路径 备注
无向 度全偶 全偶/两奇余偶 同/反皆可,一般反
有向 入=出(0) 1,-1,0 输出与dfs序同
有向图需要入栈并且dfs后逆序输出
e.g.:luogu 1314 无序字母对
#include<bits/stdc++.h> using namespace std;
const int N=;
const int inf=0x3f3f3f3f;
int n,inn[N],cnt,s[N],mp[N][N],top; string S = "No Solution"; inline int judge(char x){
if('a'<=x&&x<='z') return x-'a'+;
else return x-'A'+;} inline char prt(int x){
if(x<=) return x+'A'-;
return x+'a'-;} inline void insert(int u,int v){
++inn[u];++inn[v];
mp[u][v]=mp[v][u]=;} void dfs(int u){
for(int v=;v<=;v++)
if(mp[u][v]){
mp[u][v]=mp[v][u]=;dfs(v);}
s[++top]=u;} int main(){
cin>>n;
char ch[];
for(int i=;i<=n;i++){
scanf("%s",ch);
insert(judge(ch[]),judge(ch[]));} int p=inf;
for(int i=;i<=;i++)
if(inn[i]&)//欧拉路径起点:奇数
p = min(p,i),++cnt; if(cnt!=&&cnt!=){
cout<<S;return ;}
if(cnt == )//欧拉回路起点,找最小
for(int i=;i<=;i++)
if(inn[i]){p = i;break;} dfs(p);
for(int i=top;i>=;--i) printf("%c",prt(s[i])); return ;
}
luogu 1314 欧拉回路的更多相关文章
- Luogu 1314 【NOIP2011】聪明的质检员 (二分)
Luogu 1314 [NOIP2011]聪明的质检员 (二分) Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有 ...
- luogu 1314 聪明的质检员
二分答案的边界问题还是要注意 double挨着,int+1-1, 此题用到long long,所以初始化ans要足够大,前缀和优化 依然根据check答案大小左右mid,虽然有s,但是有了+1-1加持 ...
- Luogu 1314 [NOIP2011] 聪明的质监员
二分答案 + 前缀和. 题面中式子的意思是每一个区间$[l, r]$的贡献是这个区间内$w_i \geq W$的个数乘以这些$i$的$v_i$和. 很快发现了答案具有单调性,可以做两遍二分,分别看看小 ...
- [POI2011]Garbage 欧拉回路
[POI2011]Garbage 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2278 https://loj.ac/problem/216 ...
- 洛谷P2731 骑马修栅栏 [欧拉回路]
题目传送门 骑马修栅栏 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经 ...
- 【luogu P2731 骑马修栅栏】 题解
题目链接:https://www.luogu.org/problemnew/show/P2731 这个题是欧拉回路的模板题,那么在这里给出一个hierholzer的做法. 对于求欧拉回路的问题,有Fl ...
- P1341 无序字母对(欧拉回路)
题目链接: https://www.luogu.org/problemnew/show/P1341 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一 ...
- P6628-[省选联考 2020 B 卷] 丁香之路【欧拉回路,最小生成树】
正题 题目链接:https://www.luogu.com.cn/problem/P6628 题目大意 给出\(n\)个点的一张完全无向图,\(i\sim j\)的边权是\(|i-j|\). 然后给出 ...
- P6085-[JSOI2013]吃货JYY【状压dp,欧拉回路】
正题 题目链接:https://www.luogu.com.cn/problem/P6085 题目大意 \(n\)个点的一张无向图,有\(k\)条必走边,\(m\)条其他边,求从\(1\)出发经过必走 ...
随机推荐
- 关于封装了gevent的request grequest库的使用与讨论
最近迷上了gevent所以研究很多gevent相关的东西. 但是我现在不想写相关gevent和greenlet的东西.因为这一块内容实在太多太大太杂,我自己也还没有完全弄明白,所以等我完全搞清楚测试也 ...
- 我终于激活Windows Server2008 R2了!!
经过我不懈的努力,在重装两次系统后,我终于实现了win2008的KMS激活.这个方法可以避免虚拟机架设KMS服务器的麻烦.现将激活方法发布如下. 首先要选择安装的操作系统.Windows Server ...
- 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?
身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...
- MyBatis:一对多关联查询
MyBatis从入门到放弃四:一对多关联查询 前言 上篇学习了一对一关联查询,这篇我们学习一对多关联查询.一对多关联查询关键点则依然是配置resultMap,在resultMap中配置collecti ...
- python -- 面向对象三大特性
1,继承 1,初识继承 什么是继承? ——继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“遗传”父类的属性,从而 ...
- Hdoj 1009.FatMouse' Trade 题解
Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 563 Solved: 216[Submi ...
- poco logging
http://pocoproject.org/slides/110-Logging.pdf
- OI生涯回忆录 2017.9.10~2018.11.11
然而并没有退役 为了这两天,也准备了一年. 高一零基础的蒟蒻,NOIP2017仅有80pts 之后看着luogu的倒计时, 300天,200天,100天,30天, 直到10天.1天. 10号,11号的 ...
- windows & gcc & mingw & mysy 编译 openssl
今天有一个项目需要使用到 https, 以前一直用的都是http请求, 用 socket() 实现 https 请求我还真是头一回遇到. 先网上搜索了一下相关资料,明白了 https 相比较 http ...