http://hihocoder.com/contest/hiho50/problem/1

这题有重边,所以邻接矩阵用来统计节点u,v之间有多少条边相连,并且用另外一个数组统计每个节点的入度.

然后查找一个入度为奇数的点进行dfs(如果不存在就从n开始),

dfs的时候每次经过一条边就把这条边删除,因为一条边不会经过两次。

递归的时候保存路径.

总结起来:求解欧拉回路的方法就是,使用dfs,如果某条边被搜索到,则删除这条边,每次dfs结束之后,看当前节点还有没有与之相连的边,有就继续dfs下去.

最后,记录的回溯路径就是欧拉回路.

 #include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int p[],in[];
int n,m,j;
int g[][];
void dfs(int x)
{
//printf("%d\n",x);
for(int i=;i<=n;i++)
{
if(g[x][i])
{
//printf("%d\n",g[x][i]);
int u=g[x][i];
g[x][i]--;
g[i][x]--;
dfs(i); //
}
}
p[j++]=x;
}
int main()
{
//freopen("a.txt","r",stdin);
int a,b,k;
while(~scanf("%d%d",&n,&m))
{
memset(g,,sizeof(g));
memset(in,,sizeof(in));
for(int i=;i<m;i++)
{
scanf("%d%d",&a,&b);
in[a]++;
in[b]++;
g[a][b]++;
g[b][a]++;
}
memset(p,,sizeof(p));
j=;
for(int i=;i<=n;i++)
if(in[i]&)
{
k=i;
break;
}
// printf("%d\n",j);
if(k<=n) dfs(k);
else dfs(n);
for(int i=;i<j-;i++)
printf("%d ",p[i]);
printf("%d\n",p[j-]);
}
return ;
}

从别人看到了输入挂:

 #include <cstdio>
int g[][]={},path[]={},N,M,u,v,i,pathsize=,start,deg[]={};
char ch;
void read(int &aa)
{
aa=;
while(ch=getchar(),(ch<''||ch>'')&&(ch!='-'));
while(ch>=''&&ch<='') {aa=(aa<<)+(aa<<)+ch-'';ch=getchar();}
}
void dfs(int b)
{
for(int i=;i<=N;++i) {
if(i!=b&&g[b][i]) {
--g[b][i],--g[i][b];
dfs(i);
}
}
++pathsize;
path[pathsize]=b;
}
int main()
{
read(N),read(M);
for(;M--;) {
read(u),read(v);
++g[u][v],++g[v][u];
++deg[u],++deg[v];
}
for(start=;start<=N;++start)
if(deg[start]&)
break;
if(start<=N)
dfs(start);
else
dfs(N);
for(i=;path[i];++i) printf("%d ",path[i]);
}

hiho一下 第五十周 (求欧拉路径)的更多相关文章

  1. hiho一下 第五十一周(有向图欧拉路径)51

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  2. [hihoCoder] 第五十周: 欧拉路·二

    题目1 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角 ...

  3. hiho欧拉路·二 --------- Fleury算法求欧拉路径

    hiho欧拉路·二 分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇 ...

  4. 20155310 2016-2017-2 《Java程序设计》第十周学习总结

    20155310 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 网络编程 •网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就 ...

  5. 20155321 2016-2017-2 《Java程序设计》第十周学习总结

    20155321 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 网络概览 局域网和广域网:局域网通常限定在一个有效的地理区域之内,广域网由许多局域网组成.最 ...

  6. 20145213《Java程序设计》第十周学习总结

    20145213<Java程序设计>第十周学习总结 教材学习总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接 ...

  7. 21045308刘昊阳 《Java程序设计》第十周学习总结

    21045308刘昊阳 <Java程序设计>第十周学习总结 教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 狭义的网络编程范畴:程序员所作的事情 ...

  8. 20145236 《Java程序设计》 第十周学习总结

    20145236 <Java程序设计> 第十周学习总结 Java网络编程 Java网络编程技术 Java语言是在网络环境下诞生的,所以Java语言虽然不能说是对于网络编程的支持最好的语言, ...

  9. 201521123072《java程序设计》第十周学习总结

    201521123072<java程序设计>第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异 ...

随机推荐

  1. 建造者模式以及php实现

    建造者模式: 造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对 ...

  2. PAT甲级考前整理(2019年3月备考)之三,持续更新中.....

    PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...

  3. 打包Scala jar 包的正确步骤

    实验目的:打包可运行的scala jar,上传到spark集群,提交执行 1.idea中编译运行代码,可成功运行 2.修改2处代码//只配置appName,其他配置项注释掉val conf=new S ...

  4. git 学习笔记1

    目前我属于粗放型的[学习者],接下来需要做一些改变,让自己更加规范.首先需要学习的就是版本控制系统,本科在工作室的时候使用过一点Subversion,不过到现在已经基本没有印象了.git现在越来越成为 ...

  5. SQLServer性能优化专题

    SQLServer性能优化专题 01.SQLServer性能优化之----强大的文件组----分盘存储(水平分库) http://www.cnblogs.com/dunitian/p/5276431. ...

  6. 迅为电子iTOP-HMI043 4.3寸人机界面产品

    4.3寸人机界面: 7寸人机界面: 10.2寸人机界面: 产品认证CE:符合EN61000-6-2:2005, EN61000-6-4:2007标准FCC 兼容性:符合FCC Class A面板防护等 ...

  7. HDU_1237_简单计算器

    运算符为+,-,*,/:操作数为整数:且没有括号 设定符号优先级,先在栈底压运算符0 #include<iostream> #include<cstdio> #include& ...

  8. PowerDesigner 操作手册

    1.错误信息:Generation aborted due to errors detected during the verification of the model 解决方案: 把检查模型的选项 ...

  9. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  10. CE工具里自带的学习工具--第二关

    图解: