POJ 1041 John's trip 无向图的【欧拉回路】路径输出
欧拉回路第一题TVT
本题的一个小技巧在于:
【建立一个存放点与边关系的邻接矩阵】
1.先判断是否存在欧拉路径
无向图:
欧拉回路:连通 + 所有定点的度为偶数
欧拉路径:连通 + 除源点和终点外都为偶数
有向图:
欧拉回路:连通 + 所有点的入度 == 出度
欧拉路径:连通 + 源点 出度-入度=1 && 终点 入度 - 出度 = 1 && 其余点 入度 == 出度;
2.求欧拉路径 :
step 1:选取起点(如果是点的度数全为偶数任意点为S如果有两个点的度数位奇数取一个奇数度点为S)
step 2:对当前选中的点的所有边扩展,扩展条件(这条边为被标记),若可扩展 ->step 2;否则 step 3;
step 3:将次边计入path结果保存。
思路还是很清晰的。
贴代码了:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <stack>
#include <queue>
#include <algorithm> #define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = ;
int vis[], indegree[], map[][], n;
stack <int> s; void init(){
n = ;
memset(vis, , sizeof(vis));
memset(map, , sizeof(map));//define the relationship between vertex and edge
memset(indegree, , sizeof(indegree));
} int euler(int u){
int i;
for(i = ; i <= n; ++i){// n represents edges
if(map[u][i] && !vis[i]){
vis[i] = ;
euler(map[u][i]);
s.push(i);
}
}
return ;
} int main(){
int first, i, j, x, y, w;
while(cin >> x >> y){
if(x == && y == ) break;
cin >> w;
init();
map[x][w] = y;
map[y][w] = x;
++indegree[x];
++indegree[y];
first = x > y ? y : x;//get first vertex , but speacil judge as u casual
n = n > w ? n : w;//get numbered largest edge
while(true){
cin >> x >> y;
if(!x && !y)
break;
cin >> w;
map[x][w] = y;
map[y][w] = x;
++indegree[x];
++indegree[y];
n = n > w ? n : w;
}
for(i = ; i < ; ++i)//judge if exists solution
if(indegree[i] % ) break;
if(i < )
cout << "Round trip does not exist.\n";
else{
euler(first);
while(!s.empty()){
cout << s.top() << ' ';
s.pop();
}
cout << endl;
}
}
return ;
}
POJ 1041 John's trip 无向图的【欧拉回路】路径输出的更多相关文章
- poj 1041 John's trip——欧拉回路字典序输出
题目:http://poj.org/problem?id=1041 明明是欧拉回路字典序输出的模板. 优先队列存边有毒.写跪.学习学习TJ发现只要按边权从大到小排序连边就能正常用邻接表了! 还有一种存 ...
- 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 ...
- UOJ 117 欧拉回路(套圈法+欧拉回路路径输出+骚操作)
题目链接:http://uoj.ac/problem/117 题目大意: 解题思路:先判断度数: 若G为有向图,欧拉回路的点的出度等于入度. 若G为无向图,欧拉回路的点的度数位偶数. 然后判断连通性, ...
- POJ 1041 John's trip Euler欧拉回路判定和求回路
就是欧拉判定,判定之后就能够使用DFS求欧拉回路了.图论内容. 这里使用邻接矩阵会快非常多速度. 这类题目都是十分困难的.光是定义的记录的数组变量就会是一大堆. #include <cstdio ...
- POJ 2631 DFS+带权无向图最长路径
http://poj.org/problem?id=2631 2333水题, 有一个小技巧是说随便找一个点作为起点, 找到这个点的最远点, 以这个最远点为起点, 再次找到的最远点就是这个图的最远点 证 ...
- POJ 3436 ACM Computer Factory(最大流+路径输出)
http://poj.org/problem?id=3436 题意: 每台计算机包含P个部件,当所有这些部件都准备齐全后,计算机就组装完成了.计算机的生产过程通过N台不同的机器来完成,每台机器用它的性 ...
- poj 1041(欧拉回路+输出字典序最小路径)
题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路.一个无向图存 ...
- UVA302 John's trip(欧拉回路)
UVA302 John's trip 欧拉回路 attention: 如果有多组解,按字典序输出. 起点为每组数据所给的第一条边的编号较小的路口 每次输出完额外换一行 保证连通性 每次输入数据结束后, ...
随机推荐
- 升级Xcode6.3插件失效解决办法
1.打开终端,输入以下代码获取到DVTPlugInCompatibilityUUID defaults read /Applications/Xcode.app/Contents/I ...
- WebKit学习要点
<体系结构详解> 1. 浏览器功能结构 2. 浏览器结构 3. Webkit体系结构 4. WebKit目录结构 5. WebKit编译 <HTML引擎详解> 1. HTML语 ...
- URAL 1303
题目大意:给出N个区间[Li,Ri](1<=i<=N),一个正整数M,求N个区间里,并区间包含[0,M]的区间的最小个数(无解时输出:No solution). KB 64bit ...
- Objective-c 类接口 (@interface) (类定义)
在Objective-c中如何定义一个类呢?我们可以使用下面的格式进行表示: @interface 类名:父类名{ 变量定义; } 方法定义: @end; 下面给出一个实例: @interface P ...
- Android手机之间通过声音传输信息方法——声波通信(含project代码)
大家可能都用过支付宝的声波支付.即两个终端同一时候打开该功能,一个终端作为发送端send,一个终端作为接收端get,send将本终端上发出的请求信息依照约定规则的算法进行声音编码,并播放出来,get端 ...
- openstack之cinder
一.cinder概述: 1.F版之前,并没有cinder,对应的组件为nova-volume:以Rest API的形式提供服务 2.cinder目标: 减少nova的复杂性,降低nova的负载,支持多 ...
- No.3小白的HTML+CSS心得篇
A--看的东西多了总会出现好多模糊不清的又长的很像的的词语 今天对此进行区别分析下 1. align 与 text-align的区别 align 在W3Cschool中是这样解释的 ----alig ...
- 关于RadUpload上传问题总结
最近在开发上传控件,使用RadUpload上传大附件 发现了几个小问题,总结后分享给大家: 1.IE6浏览器下文件的路径显示的是物理路径,需要进行转换 2.IIS7.0 配置时要选择经典模式 3.we ...
- 「OC」 基本语法
一.OC简介 在C语言的基础上,增加了一层最小的面向对象语法:完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码:可以使用OC开发Mac OS X平台和iOS平台的应用程序. 二.OC语 ...
- iOS推送介绍
iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...