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】骑马修栅栏,欧拉回路相关推荐

  1. 信息学奥赛一本通 1375:骑马修栅栏(fence) | 洛谷 P2731 [USACO3.3]骑马修栅栏 Riding the Fences

    [题目链接] ybt 1375:骑马修栅栏(fence) 洛谷 P2731 [USACO3.3]骑马修栅栏 Riding the Fences [题目考点] 1. 图论:欧拉回路 欧拉回路存在的条件: ...

  2. 骑马修栅栏(fence) 、铲雪车(snow)

    问题 K: 骑马修栅栏(fence) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其 ...

  3. 洛谷 P2731 骑马修栅栏 Riding the Fences

    P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...

  4. 2039 骑马修栅栏

    2039 骑马修栅栏 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Farmer John每年有很多栅栏要修理. ...

  5. 骑马修栅栏(信息学奥赛一本通-T1375)

    [题目描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...

  6. 一本通1375:骑马修栅栏(fence)

    [题目描述] 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅 ...

  7. wlacm 骑马修栅栏 (图的遍历)题解

    题目描述 农民John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个一个栅栏.你必须编一个程序,读入栅栏网 ...

  8. 算法提高课-图论-欧拉回路和欧拉路径-AcWing 1124. 骑马修栅栏:欧拉路径、dfs

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 本题是无向图的欧拉路,要输出字典序最小的欧拉路. 如何输出字典序最小的路径? 从最小的点开始搜,这样得到的欧拉路是字典序最小的. 无 ...

  9. [模板][持续更新]欧拉回路与欧拉路径浅析

    Luogu P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与 ...

最新文章

  1. php 和ajax,PHP与Ajax
  2. java ldap userpassword 解密_Spring Boot中使用LDAP来统一管理用户信息
  3. 452A - Eevee 模拟字符串,挺简单的一道题
  4. MVVM设计模式《网摘》
  5. Simulink电力系统仿真-三相短路
  6. Ubuntu18.04 一条命令安装VLC视频播放器 可倍速播放
  7. 前端使用阿里云图标库
  8. Flask项目基本流程
  9. MSN聊天记录显示方式
  10. 拆书笔记24|笨笨的圣人
  11. 卷三十一 汉纪二十三
  12. 微软office认证课程
  13. 弹弹弹,弹走鱼尾纹的弹出菜单(vue)
  14. 利用sympy库求解常微分方程:dsolve()函数
  15. 超详细:R语言缺失值及异常值处理
  16. mathematica求定积分和不定积分
  17. GitHub快速学习-三
  18. MVC过滤器使用实例
  19. QQ空间签到说说表情代码大全
  20. 学习日本人的“虚伪”

热门文章

  1. Spring MVC DispatcherServlet改造为 CSE RestServlet 常见问题汇编
  2. 干货下载:可能是你见过的最全的网络爬虫总结
  3. webpack4.0各个击破(1)—— html部分
  4. 【华为敏捷/DevOps实践】7. 敏捷,DevOps,傻傻不分清楚
  5. 义教志愿服务系统c语言,招募义教志愿者策划书范本
  6. 数据结构-动态查找树表与平衡二叉树 红黑树简单介绍
  7. python判断_轻松python文本专题-判断对象里面是否是类字符串(推荐使用isinstance(obj,str))...
  8. 第十章:在Spark集群上掌握比较重要的图操作之Computing Degree
  9. webstorm怎么跑项目_看不懂代码,不会用框架,新手程序员入职后如何快速上手项目?...
  10. python为源文件指定系统默认_Python 设置系统默认编码