题目链接:http://poj.org/problem?id=1041

题目:

题意:给你n条街道,m个路口,每次输入以0 0结束,给你的u v t分别表示路口u和v由t这条街道连接,要输出从起点出发又回到起点的字典序最小的路径,如果达不到输出Round trip does not exist.

思路:首先得判断是否存在欧拉回路,如果不存在则输出“Round trip does not exist.”。记录每个路口的度,如果存在度为奇数得路口则是不存在欧拉回路得图,否则用mp[u][t]=v来表示u可以通过t这条街道到达v,跑一边欧拉回路并记录路径即可。

代码实现如下:

 1 #include <set>
 2 #include <map>
 3 #include <queue>
 4 #include <stack>
 5 #include <cmath>
 6 #include <bitset>
 7 #include <cstdio>
 8 #include <string>
 9 #include <vector>
10 #include <cstdlib>
11 #include <cstring>
12 #include <iostream>
13 #include <algorithm>
14 using namespace std;
15
16 typedef long long ll;
17 typedef pair<ll, ll> pll;
18 typedef pair<ll, int> pli;
19 typedef pair<int, ll> pil;;
20 typedef pair<int, int> pii;
21 typedef unsigned long long ull;
22
23 #define lson i<<1
24 #define rson i<<1|1
25 #define bug printf("*********\n");
26 #define FIN freopen("D://code//in.txt", "r", stdin);
27 #define debug(x) cout<<"["<<x<<"]" <<endl;
28 #define IO ios::sync_with_stdio(false),cin.tie(0);
29
30 const double eps = 1e-8;
31 const int mod = 10007;
32 const int maxn = 1e6 + 7;
33 const double pi = acos(-1);
34 const int inf = 0x3f3f3f3f;
35 const ll INF = 0x3f3f3f3f3f3f3f;
36
37 int s, u, v, t, mx, p;
38 int mp[55][2007], in[55], vis[2007], ans[2007];
39
40 void eulergraph(int s) {
41     for(int i = 1; i <= mx; i++) {
42         if(mp[s][i] && !vis[i]) {
43             vis[i] = 1;
44             eulergraph(mp[s][i]);
45             ans[++p] = i;
46         }
47     }
48 }
49
50 int main() {
51     //FIN;
52     while(~scanf("%d%d", &u, &v)) {
53         if(u == 0 && v == 0) break;
54         s = min(u, v);
55         p = 0;
56         memset(in, 0, sizeof(vis));
57         memset(mp, 0, sizeof(mp));
58         memset(vis, 0, sizeof(vis));
59         scanf("%d", &t);
60         in[u]++, in[v]++;
61         mx = t;
62         mp[u][t] = v, mp[v][t] = u;
63         while(~scanf("%d%d", &u, &v)) {
64             if(u == 0 && v == 0) break;
65             scanf("%d", &t);
66             mx = max(mx, t);
67             in[u]++, in[v]++;
68             mp[u][t] = v, mp[v][t] = u;
69         }
70         int flag = 0;
71         for(int i = 1; i <= 45; i++) {
72             if(in[i] & 1) {
73                 printf("Round trip does not exist.\n");
74                 flag = 1;
75                 break;
76             }
77         }
78         if(flag) continue;
79         eulergraph(s);
80         for(int i = p; i >= 1; i--) {
81             printf("%d%c", ans[i], i == 1 ? '\n' : ' ');
82         }
83     }
84     return 0;
85 }

转载于:https://www.cnblogs.com/Dillonh/p/9396388.html

John's trip(POJ1041+欧拉回路+打印路径)相关推荐

  1. Frog Traveler 最短路,bfs剪枝,打印路径

    题意 : 给两个长度为n的数组,初始位于索引n,目标是越过索引1,注意不能往后跳,每次可以跳0到a[i]a[i]a[i]米,即,身处索引iii,可以跳[0,a[i]][0, a[i]][0,a[i]] ...

  2. hdu-1104-Remainder(BFS打印路径+数论)(%与mod的区别)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1104 题意:(注意题目中的%是指mod)开始给了你n, k, m....每次由+m, -m, *m, ...

  3. 迪杰斯特拉算法及变式(最短距离,打印路径,最短经过节点数)

    问题描述 给定一个图,图的节点名称用(000 ~ N−1N - 1N−1)表示.NNN为图的节点个数,MMM为边的个数,SSS为起始点. 输入条件: 第一行输入 NMSN M SNMS. 其后MMM行 ...

  4. 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)

    作者 龚雄兴 单位 湖北文理学院 本题目要求通过读入无向网的边的信息(省略了各顶点的信息,仅用顶点编号来表示),构造图,并利用Dijkstra算法,求出指定源点到其它各点的最短路径. 样例" ...

  5. [论文学习笔记]01一种轮廓平行扫描算法【3D打印路径规划】

    文章目录 零.论文来源 0.1 概述 一.算法描述 1.1 定义一些概念 1.2 域分区 1.3 偏移量的生成 1.4 自交问题 1.5 尖角 1.6 外部轮廓和内部轮廓相交 1.7 空隙 1.8 连 ...

  6. POJ 3414 Pots(深搜并打印路径)

    POJ 3414 Pots(深搜并打印路径) You are given two pots, having the volume of A and B liters respectively. The ...

  7. POJ 1041 John's trip(欧拉回路)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5398549.html 题意: Johnny 有了一台新车,他想去访问他所有的朋友(赤裸裸的炫耀?),他的朋友有很多,住在城 ...

  8. POJ - 1041 John's trip(欧拉回路)

    题目链接:点击查看 题目大意:给出一张无向图,要求从起点开始遍历一遍所有的边,最后再回到起点,题目要求输出任意一组方案 细节: 起点不是点1,而是第一条边中两个端点中娇小的一个点 给出的x y z代表 ...

  9. POJ-1041 John's trip

    写的时候思路很混乱,反复调试交了一发过了,后来才想清楚为啥 首先直接根据街道的值来排序从小到大排序,然后dfs一下就能得到答案,但是问题在于自己对于跑dfs理解不深出现了问题, 1.从小到大排序 2. ...

最新文章

  1. 如何发布自己的NPM包(模块)?
  2. 【noi 2.5_7834】分成互质组(dfs)
  3. CodeForces 597A Divisibility
  4. Html5+razor+jqmobile尝鲜
  5. 前端学习(3222):函数式组件使用props
  6. Python 中如何自动导入缺失的库?
  7. centos 6.5 yum mysql 5.6_centos 6.5 yum安装 mysql 5.6
  8. 【python】匿名函数与装饰器
  9. Win11如何自动关机 windows11自动关机的设置方法
  10. 星环科技TDH8.0使用必读2: 10种数据模型全支持 未来属于多模型大数据平台
  11. 阿里安全人机行为识别比赛 前五名队伍分享
  12. 30 个 Python3 的最佳实操,小贴士和窍门(附课程)
  13. STL源码剖析(一)STL简介
  14. 1.python网页设计,点击按键显示对话窗口
  15. golang统计字符串字数
  16. 缩略图方式下, 资源管理器,不能显示文件名
  17. OCR手机证件扫描光学字符识别
  18. HTML 练习案例旅游网站首页
  19. 频繁跳槽会有什么不好的影响?
  20. 分页计算总页数的算法

热门文章

  1. 【机器学习】机器学习从零到掌握之九 -- 教你使用K近邻算法形成完整系统
  2. 计算机视觉论文-2021-09-10
  3. 收藏 | 深度学习检测小目标常用方法
  4. 《Python编程从入门到实践》记录之列表遍历
  5. 【通俗易懂】手把手带你实现DeepFM!
  6. php转移单引号,php如何转义单引号
  7. mysql中生成列与JSON类型的索引
  8. Qt532.线程(_beginthread)
  9. Flink - allowedLateness
  10. 如何判断一棵二叉树是完全二叉树(1)