John's trip(POJ1041+欧拉回路+打印路径)
题目链接: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,跑一边欧拉回路并记录路径即可。
代码实现如下:
- #include <set>
- #include <map>
- #include <queue>
- #include <stack>
- #include <cmath>
- #include <bitset>
- #include <cstdio>
- #include <string>
- #include <vector>
- #include <cstdlib>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- typedef pair<ll, ll> pll;
- typedef pair<ll, int> pli;
- typedef pair<int, ll> pil;;
- typedef pair<int, int> pii;
- typedef unsigned long long ull;
- #define lson i<<1
- #define rson i<<1|1
- #define bug printf("*********\n");
- #define FIN freopen("D://code//in.txt", "r", stdin);
- #define debug(x) cout<<"["<<x<<"]" <<endl;
- #define IO ios::sync_with_stdio(false),cin.tie(0);
- const double eps = 1e-;
- const int mod = ;
- const int maxn = 1e6 + ;
- const double pi = acos(-);
- const int inf = 0x3f3f3f3f;
- const ll INF = 0x3f3f3f3f3f3f3f;
- int s, u, v, t, mx, p;
- int mp[][], in[], vis[], ans[];
- void eulergraph(int s) {
- for(int i = ; i <= mx; i++) {
- if(mp[s][i] && !vis[i]) {
- vis[i] = ;
- eulergraph(mp[s][i]);
- ans[++p] = i;
- }
- }
- }
- int main() {
- //FIN;
- while(~scanf("%d%d", &u, &v)) {
- if(u == && v == ) break;
- s = min(u, v);
- p = ;
- memset(in, , sizeof(vis));
- memset(mp, , sizeof(mp));
- memset(vis, , sizeof(vis));
- scanf("%d", &t);
- in[u]++, in[v]++;
- mx = t;
- mp[u][t] = v, mp[v][t] = u;
- while(~scanf("%d%d", &u, &v)) {
- if(u == && v == ) break;
- scanf("%d", &t);
- mx = max(mx, t);
- in[u]++, in[v]++;
- mp[u][t] = v, mp[v][t] = u;
- }
- int flag = ;
- for(int i = ; i <= ; i++) {
- if(in[i] & ) {
- printf("Round trip does not exist.\n");
- flag = ;
- break;
- }
- }
- if(flag) continue;
- eulergraph(s);
- for(int i = p; i >= ; i--) {
- printf("%d%c", ans[i], i == ? '\n' : ' ');
- }
- }
- return ;
- }
John's trip(POJ1041+欧拉回路+打印路径)的更多相关文章
- UVA302 John's trip(欧拉回路)
UVA302 John's trip 欧拉回路 attention: 如果有多组解,按字典序输出. 起点为每组数据所给的第一条边的编号较小的路口 每次输出完额外换一行 保证连通性 每次输入数据结束后, ...
- Uva 10054 欧拉回路 打印路径
看是否有欧拉回路 有的话打印路径 欧拉回路存在的条件: 如果是有向图的话 1.底图必须是连通图 2.最多有两个点的入度不等于出度 且一个点的入度=出度+1 一个点的入度=出度-1 如果是无向图的话 1 ...
- poj1041 John's trip——字典序欧拉回路
题目:http://poj.org/problem?id=1041 求字典序欧拉回路: 首先,如果图是欧拉图,就一定存在欧拉回路,直接 dfs 即可,不用 return 判断什么的,否则TLE... ...
- Watchcow(POJ2230+双向欧拉回路+打印路径)
题目链接:http://poj.org/problem?id=2230 题目: 题意:给你m条路径,求一条路径使得从1出发最后回到1,并满足每条路径都恰好被沿着正反两个方向经过一次. 思路:由于可以回 ...
- POJ1041 John's trip
John's trip Language:Default John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- BFS+打印路径
题目是给你起点sx,和终点gx:牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1. 瞬移:John花一分钟由任意点X移动到点2*X. 你要输出最短步数及打印路径 ...
- Java实现John's trip(约翰的小汽车)
1 问题描述 John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8998 Accepted: 3018 Sp ...
- LCS(打印路径) POJ 2250 Compromise
题目传送门 题意:求单词的最长公共子序列,并要求打印路径 分析:LCS 将单词看成一个点,dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]), dp[i][j] ...
随机推荐
- ACM 第十二天
博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈,SG函数,SG定理) 一. 巴什博奕(Bash Game): A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30.这应该是最古老的关 ...
- java 基础 --int 和Integer的区别
感到脸红:int是整形 -128~127 Integer是正整型,你怎么会想到这样的回答,妈的,有脑子吗?!!! 1,int是基本数据类型,初始为0,Integer为封装类,初始为null ①无论如何 ...
- 新jQuery中attr 与 prop的不同
使用最新版本jquery,在对checkbox操作时发现 attr属性全选,反选等不起作用,后查发现新版本对标签属性的设置发生了变化. 在高版本的jquery引入prop方法后,什么时候该用prop? ...
- 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法
题目描述 那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛的加密方法.由于她们并不是经验十足,她们的加密方法非常简单:第i只奶牛掌握着密码的第i个数字,起始的时候是Ci(0≤C ...
- Android关于注解那点事(二)
前言 上篇主要讲解了注解的基本操作,以及一个运行时注解的小例子,今天我们主要来说道说道注解中另一种实现方式,编译时注解(CLASS),不同于上篇例子的运行时注解(RUNTIME),需要在代码运行时,反 ...
- BZOJ2820:YY的GCD——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2820 Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...
- hdu6184 Counting Stars 【三元环计数】
题目链接 hdu6184 题解 题意是让我们找出所有的这样的图形: 我们只需要求出每条边分别在多少个三元环中,记为\(x\),再然后以该点为中心的图形数就是\({x \choose 2}\) 所以我们 ...
- BZOJ1303 [CQOI2009]中位数图 【乱搞】
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3086 Solved: 1898 [Submit][Sta ...
- BZOJ1006 神奇的国度 【弦图染色——最大势算法MCS】
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 4146 Solved: 1916 [Submit][S ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...