POJ 1041 John's trip Euler欧拉回路判定和求回路
就是欧拉判定,判定之后就能够使用DFS求欧拉回路了。图论内容。
这里使用邻接矩阵会快非常多速度。
这类题目都是十分困难的。光是定义的记录的数组变量就会是一大堆。
#include <cstdio>
#include <cstring>
#include <stack>
#include <vector>
using namespace std; struct Edge
{
int ed, des;
Edge(int e = 0, int d = 0) : ed(e), des(d) {}
};
const int EDGES = 2000;//1996;
const int VEC = 45;
stack<int> stk;
int degree[VEC];
vector<Edge> gra[VEC];
bool vis[EDGES]; void euler(int u)
{
for(int i = 0; i < (int)gra[u].size(); i++)
{
if(!vis[gra[u][i].ed]) //标志訪问过了,这里须要表示桥,不是顶点
{
vis[gra[u][i].ed] = true;
euler(gra[u][i].des);
stk.push(gra[u][i].ed);
//不能break
}
}
} int main()
{
int x, y, z, one;
while (scanf("%d %d", &x, &y) != EOF && x && y)
{
memset(vis, 0, sizeof(vis));
memset(degree, 0, sizeof(degree));
for (int i = 1; i < VEC; i++)
gra[i].clear(); scanf("%d", &z);
one = min(x, y);
degree[x]++; degree[y]++;
gra[x].push_back(Edge(z, y)); gra[y].push_back(Edge(z, x));
while (scanf("%d %d", &x, &y) != EOF && x && y)
{
scanf("%d", &z);
gra[x].push_back(Edge(z, y)); gra[y].push_back(Edge(z, x));
degree[x]++, degree[y]++;
}
for (int i = 1; i < VEC; i++)
{
if (degree[i] & 1)
{
puts("Round trip does not exist.");
goto endLoop; //玩玩goto
}
} euler(one);
while (!stk.empty())
{
printf("%d ", stk.top());
stk.pop();
}
putchar('\n'); endLoop:;
}
return 0;
}
POJ 1041 John's trip Euler欧拉回路判定和求回路的更多相关文章
- poj 1041 John's trip——欧拉回路字典序输出
题目:http://poj.org/problem?id=1041 明明是欧拉回路字典序输出的模板. 优先队列存边有毒.写跪.学习学习TJ发现只要按边权从大到小排序连边就能正常用邻接表了! 还有一种存 ...
- POJ 1041 John's trip 无向图的【欧拉回路】路径输出
欧拉回路第一题TVT 本题的一个小技巧在于: [建立一个存放点与边关系的邻接矩阵] 1.先判断是否存在欧拉路径 无向图: 欧拉回路:连通 + 所有定点的度为偶数 欧拉路径:连通 + 除源点和终点外都为 ...
- poj 1041 John's trip 欧拉回路
题目链接 求给出的图是否存在欧拉回路并输出路径, 从1这个点开始, 输出时按边的升序输出. 将每个点的边排序一下就可以. #include <iostream> #include < ...
- [POJ 1041] John's Trip
[题目链接] http://poj.org/problem?id=1041 [算法] 欧拉回路[代码] #include <algorithm> #include <bitset&g ...
- [POJ1637]混合图的欧拉回路判定|网络流
混合图的欧拉回路判定 上一篇正好分别讲了有向图和无向图的欧拉回路判定方法 如果遇上了混合图要怎么做呢? 首先我们思考有向图的判定方法:所有点的出度=入度 我们可以先为无向边任意定一个向,算出此时所有顶 ...
- John's trip POJ - 1041(这题数据有点水)
题意: 其实还是一个欧拉回路,但要按字典序走路: 解析: 我真是蠢啊emm... map[i][j]表示由顶点i经街道j会到达的顶点编号 然后枚举j就好了 用栈储存.. 虽然我不是这样写的 #incl ...
- John's trip(POJ1041+欧拉回路+打印路径)
题目链接:http://poj.org/problem?id=1041 题目: 题意:给你n条街道,m个路口,每次输入以0 0结束,给你的u v t分别表示路口u和v由t这条街道连接,要输出从起点出发 ...
- poj1041 John's trip——字典序欧拉回路
题目:http://poj.org/problem?id=1041 求字典序欧拉回路: 首先,如果图是欧拉图,就一定存在欧拉回路,直接 dfs 即可,不用 return 判断什么的,否则TLE... ...
- UVA302 John's trip(欧拉回路)
UVA302 John's trip 欧拉回路 attention: 如果有多组解,按字典序输出. 起点为每组数据所给的第一条边的编号较小的路口 每次输出完额外换一行 保证连通性 每次输入数据结束后, ...
随机推荐
- POJ3468 A Simple Problem with Interger [树状数组,差分]
题目传送门 A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 1 ...
- 0818JavaWeb基础
Java Web基础 JSP JSP --- Java Server Page 在服务器上运行的页面 动态网页(JSP网页) 与后台有数据交换的网页 ...
- go chapter 5 - 异常处理 error、panic、recover
https://blog.csdn.net/tennysonsky/article/details/78946265 error(不中断).panic(中断).recover(拦截中断 类似于 ca ...
- BZOJ 3669 [Noi2014]魔法森林(贪心+LCT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3669 [题目大意] 给出一张图,每条边上有两个值ai和bi,现在需要求出一条1到N的路 ...
- 【推导】【分类讨论】Codeforces Round #431 (Div. 1) B. Rooter's Song
给你一个这样的图,那些点是舞者,他们每个人会在原地待ti时间之后,以每秒1m的速度向前移动,到边界以后停止.只不过有时候会碰撞,碰撞之后的转向是这样哒: 让你输出每个人的停止位置坐标. ①将x轴上初始 ...
- Codeforces Round #127 (Div. 1) B. Guess That Car! 扫描线
B. Guess That Car! 题目连接: http://codeforces.com/contest/201/problem/B Description A widely known amon ...
- 域名做CDN来通过隐藏服务器真实IP的方法来防止DDoS攻击(转)
隐藏服务器真实IP是解决问题最好和最快的方法,但只针对小流量,大流量同样会扛不住. 服务器前端加CDN中转,比如阿里云.百度云加速.360网站卫士.加速乐.安全宝等,如果资金充裕的话,可以购买高防的盾 ...
- Sys.dm_os_wait_stats Sys.dm_performance_counters
wait_type waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms MISCELLANEOUS 0 0 0 ...
- jQuery: on()特别的几种用法
jQuery大家肯定用得非常的熟练了,没什么好讲的,今天为什么要写关于on这个事件绑定的API?主要还是因为看了大神的博文:web移动端浮层滚动阻止window窗体滚动JS/CSS处理;其中对于on用 ...
- iOS开发利器-CocoaPods安装和使用教程
新博客http://www.liuchendi.com 开发iOS项目时肯定会用到许多第三方项目,比如说:ASIHttprequest,JSONKit等等,一些类库可能又关联着其他类库,如果超过一定的 ...