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\)出发经过必走 ...
随机推荐
- python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)
一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况.但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用. 今天晚上正好好好研究了一番解答了自己心中的困惑. Q:p ...
- python自动化运维笔记2 —— IP地址处理模块IPy
1.2 实用的IP地址处理模块IPy ip地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能.可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括 ...
- Java 8新特性之 并行和并行数组(八恶人-8)
Jody Domingre 多莫歌·乔迪 “How you doing, dummy?” 你还好吗,傻瓜 一.基本介绍 Java8不仅增加了Stream,而且还增加了parallelStream(并行 ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 563 Solved: 216[Submi ...
- 洛谷 P2466 Sue的小球 解题报告
P2466 [SDOI2008]Sue的小球 题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当 ...
- MD5 SHA1 CRC32
md5: import hashlib md5 = hashlib.md5() md5.update(bytes('http://www.baidu.com',encoding="utf-8 ...
- 【poj2396】 Budget
http://poj.org/problem?id=2396 (题目链接) 题意 给出一个矩阵,给出每一行每一列的和,以及若干限制条件,限制了其中每一个元素的上下界,求一种可行的方案使得每一行每一列数 ...
- POJ1088(记忆搜索加dp)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 106415 Accepted: 40499 Description ...
- apk的安装删除
1,签名: java -jar signapk.jar platform.x509.pem platform.pk8 DownloadProvider.apk DownloadProvider-sig ...
- Linux 常用命令——which, whereis, locate, find
转载请注明出处:http://blog.csdn.net/drecik__/article/details/8455399 1. which 查找使用命令所在的位置 2. whereis 搜索文件,跟 ...