题目链接: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-;
  31. const int mod = ;
  32. const int maxn = 1e6 + ;
  33. const double pi = acos(-);
  34. const int inf = 0x3f3f3f3f;
  35. const ll INF = 0x3f3f3f3f3f3f3f;
  36.  
  37. int s, u, v, t, mx, p;
  38. int mp[][], in[], vis[], ans[];
  39.  
  40. void eulergraph(int s) {
  41. for(int i = ; i <= mx; i++) {
  42. if(mp[s][i] && !vis[i]) {
  43. vis[i] = ;
  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 == && v == ) break;
  54. s = min(u, v);
  55. p = ;
  56. memset(in, , sizeof(vis));
  57. memset(mp, , sizeof(mp));
  58. memset(vis, , 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 == && v == ) 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 = ;
  71. for(int i = ; i <= ; i++) {
  72. if(in[i] & ) {
  73. printf("Round trip does not exist.\n");
  74. flag = ;
  75. break;
  76. }
  77. }
  78. if(flag) continue;
  79. eulergraph(s);
  80. for(int i = p; i >= ; i--) {
  81. printf("%d%c", ans[i], i == ? '\n' : ' ');
  82. }
  83. }
  84. return ;
  85. }

John's trip(POJ1041+欧拉回路+打印路径)的更多相关文章

  1. UVA302 John's trip(欧拉回路)

    UVA302 John's trip 欧拉回路 attention: 如果有多组解,按字典序输出. 起点为每组数据所给的第一条边的编号较小的路口 每次输出完额外换一行 保证连通性 每次输入数据结束后, ...

  2. Uva 10054 欧拉回路 打印路径

    看是否有欧拉回路 有的话打印路径 欧拉回路存在的条件: 如果是有向图的话 1.底图必须是连通图 2.最多有两个点的入度不等于出度 且一个点的入度=出度+1 一个点的入度=出度-1 如果是无向图的话 1 ...

  3. poj1041 John's trip——字典序欧拉回路

    题目:http://poj.org/problem?id=1041 求字典序欧拉回路: 首先,如果图是欧拉图,就一定存在欧拉回路,直接 dfs 即可,不用 return 判断什么的,否则TLE... ...

  4. Watchcow(POJ2230+双向欧拉回路+打印路径)

    题目链接:http://poj.org/problem?id=2230 题目: 题意:给你m条路径,求一条路径使得从1出发最后回到1,并满足每条路径都恰好被沿着正反两个方向经过一次. 思路:由于可以回 ...

  5. POJ1041 John's trip

    John's trip Language:Default John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...

  6. UVA 10054 The Necklace(欧拉回路,打印路径)

    题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  7. BFS+打印路径

    题目是给你起点sx,和终点gx:牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1. 瞬移:John花一分钟由任意点X移动到点2*X. 你要输出最短步数及打印路径 ...

  8. Java实现John's trip(约翰的小汽车)

    1 问题描述 John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8998 Accepted: 3018 Sp ...

  9. LCS(打印路径) POJ 2250 Compromise

    题目传送门 题意:求单词的最长公共子序列,并要求打印路径 分析:LCS 将单词看成一个点,dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]), dp[i][j] ...

随机推荐

  1. ACM 第十二天

    博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈,SG函数,SG定理) 一.  巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30.这应该是最古老的关 ...

  2. java 基础 --int 和Integer的区别

    感到脸红:int是整形 -128~127 Integer是正整型,你怎么会想到这样的回答,妈的,有脑子吗?!!! 1,int是基本数据类型,初始为0,Integer为封装类,初始为null ①无论如何 ...

  3. 新jQuery中attr 与 prop的不同

    使用最新版本jquery,在对checkbox操作时发现 attr属性全选,反选等不起作用,后查发现新版本对标签属性的设置发生了变化. 在高版本的jquery引入prop方法后,什么时候该用prop? ...

  4. 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法

    题目描述 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她们并不是经验十足,她们的加密方法非常简单:第i只奶牛掌握着密码的第i个数字,起始的时候是Ci(0≤C ...

  5. Android关于注解那点事(二)

    前言 上篇主要讲解了注解的基本操作,以及一个运行时注解的小例子,今天我们主要来说道说道注解中另一种实现方式,编译时注解(CLASS),不同于上篇例子的运行时注解(RUNTIME),需要在代码运行时,反 ...

  6. BZOJ2820:YY的GCD——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2820 Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...

  7. hdu6184 Counting Stars 【三元环计数】

    题目链接 hdu6184 题解 题意是让我们找出所有的这样的图形: 我们只需要求出每条边分别在多少个三元环中,记为\(x\),再然后以该点为中心的图形数就是\({x \choose 2}\) 所以我们 ...

  8. BZOJ1303 [CQOI2009]中位数图 【乱搞】

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3086  Solved: 1898 [Submit][Sta ...

  9. BZOJ1006 神奇的国度 【弦图染色——最大势算法MCS】

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 4146  Solved: 1916 [Submit][S ...

  10. 牛客网 Wannafly挑战赛27 蓝魔法师

    蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...