【codevs2039】骑马修栅栏,欧拉回路
2039 骑马修栅栏 USACO
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 Description
Farmer John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。
John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。
每一个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个顶点)。一个顶点上可连接任意多(>=1)个栅栏。两顶点间可能有多个栅栏。所有栅栏都是连通的(也就是你可以从任意一个栅栏到达另外的所有栅栏)。
你的程序必须输出骑马的路径(用路上依次经过的顶点号码表示)。我们如果把输出的路径看成是一个500进制的数,那么当存在多组解的情况下,输出500进制表示法中最小的一个 (也就是输出第一个数较小的,如果还有多组解,输出第二个数较小的,等等)。
输入数据保证至少有一个解。
输入描述 Input Description
第1行: 一个整数F(1 <= F <= 1024),表示栅栏的数目
第2到F+1行: 每行两个整数i, j(1 <= i,j <= 500)表示这条栅栏连接i与j号顶点。
输出描述 Output Description
输出应当有F+1行,每行一个整数,依次表示路径经过的顶点号。注意数据可能有多组解,但是只有上面题目要求的那一组解是认为正确的。
样例输入 Sample Input
9
1 2
2 3
3 4
4 2
4 5
2 5
5 6
5 7
4 6
样例输出 Sample Output
1
2
3
4
2
5
4
6
5
7
写在前面:(图论第一天,感觉刚开始还不是很难,不过我总是有一种失群落伍的惶恐感是怎么回事???)
————————————————————————————线线线——————————————————————————
这道题目就是一个比较简单的欧拉回路,但是题目说什么五百进制我也没搞懂,干脆就找前面编号最小的节点,但是结果……一言难尽!
#include<cstdio>
#include<iostream>
using namespace std;
int g[1025][1025],n,num[1025],k,ans[1025];
int maxn=-9999,minn=9999;
void find(int x)
{for (int i=minn;i<=maxn;i++)if (g[x][i]>=1) {g[x][i]--;g[i][x]--;find(i);}k++;ans[k]=x;//这两行是万恶之源,我原先把他们放到上面,正序输出,就死活有两个点过不了,后来改了一下就过了,大体原因就是会存在多种情况,死循环路径导致不能上来就存位置blabla
}
main()
{scanf("%d",&n);for (int i=1;i<=n;i++){int x,y;scanf("%d%d",&x,&y);maxn=max(maxn,max(y,x));minn=min(minn,min(y,x));g[x][y]++;g[y][x]++;num[x]++;num[y]++;//这里的原因是因为会有两个点之间有好多栅栏。。。}int t=1; for (int i=minn;i<=maxn;i++)if (num[i]%2==1) {t=i;break;}//找出度为奇数的点,直接从这里开始搜索。find(t);for (int i=n+1;i>=1;i--) printf("%d\n",ans[i]);
}
【codevs2039】骑马修栅栏,欧拉回路相关推荐
- 信息学奥赛一本通 1375:骑马修栅栏(fence) | 洛谷 P2731 [USACO3.3]骑马修栅栏 Riding the Fences
[题目链接] ybt 1375:骑马修栅栏(fence) 洛谷 P2731 [USACO3.3]骑马修栅栏 Riding the Fences [题目考点] 1. 图论:欧拉回路 欧拉回路存在的条件: ...
- 骑马修栅栏(fence) 、铲雪车(snow)
问题 K: 骑马修栅栏(fence) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其 ...
- 洛谷 P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...
- 2039 骑马修栅栏
2039 骑马修栅栏 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Farmer John每年有很多栅栏要修理. ...
- 骑马修栅栏(信息学奥赛一本通-T1375)
[题目描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...
- 一本通1375:骑马修栅栏(fence)
[题目描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...
- wlacm 骑马修栅栏 (图的遍历)题解
题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅栏网 ...
- 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1124. 骑马修栅栏:欧拉路径、dfs
文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 本题是无向图的欧拉路,要输出字典序最小的欧拉路. 如何输出字典序最小的路径? 从最小的点开始搜,这样得到的欧拉路是字典序最小的. 无 ...
- [模板][持续更新]欧拉回路与欧拉路径浅析
Luogu P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与 ...
最新文章
- php 和ajax,PHP与Ajax
- java ldap userpassword 解密_Spring Boot中使用LDAP来统一管理用户信息
- 452A - Eevee 模拟字符串,挺简单的一道题
- MVVM设计模式《网摘》
- Simulink电力系统仿真-三相短路
- Ubuntu18.04 一条命令安装VLC视频播放器 可倍速播放
- 前端使用阿里云图标库
- Flask项目基本流程
- MSN聊天记录显示方式
- 拆书笔记24|笨笨的圣人
- 卷三十一 汉纪二十三
- 微软office认证课程
- 弹弹弹,弹走鱼尾纹的弹出菜单(vue)
- 利用sympy库求解常微分方程:dsolve()函数
- 超详细:R语言缺失值及异常值处理
- mathematica求定积分和不定积分
- GitHub快速学习-三
- MVC过滤器使用实例
- QQ空间签到说说表情代码大全
- 学习日本人的“虚伪”
热门文章
- Spring MVC DispatcherServlet改造为 CSE RestServlet 常见问题汇编
- 干货下载:可能是你见过的最全的网络爬虫总结
- webpack4.0各个击破(1)—— html部分
- 【华为敏捷/DevOps实践】7. 敏捷,DevOps,傻傻不分清楚
- 义教志愿服务系统c语言,招募义教志愿者策划书范本
- 数据结构-动态查找树表与平衡二叉树 红黑树简单介绍
- python判断_轻松python文本专题-判断对象里面是否是类字符串(推荐使用isinstance(obj,str))...
- 第十章:在Spark集群上掌握比较重要的图操作之Computing Degree
- webstorm怎么跑项目_看不懂代码,不会用框架,新手程序员入职后如何快速上手项目?...
- python为源文件指定系统默认_Python 设置系统默认编码