欧拉图的课题研究( 三 )

<=maxn;i++)//判断是否为欧拉回路{if(in[i]%2!=0){flag=0;break;}}if(flag==0){puts("Round trip does not exist.");continue;}ans.clear();dfs(start);for(int i=0;i
3、算法实现
//欧拉路径的输出(此图为无向图)#includeusing namespace std;#define M 200struct stack{int top,node[M];}s;//顶点的栈结构int Edge[M][M]; //邻接矩阵int n;//顶点个数void dfs(int x)//这里的深度优先跟标准版有所区别,即不需要回溯{s.top++;s.node[s.top]=x;//将即将要扩展的结点压入栈中for(int i=0;i=0){int flag=0;//记录当前结点是否有边可以扩展for(int i=0;i>n>>m;//n---顶点数m---边数memset(Edge,0,sizeof(Edge));for(int i=0;i>s>>t;Edge[s-1][t-1]=1;Edge[t-1][s-1]=1;}num=0;start=0;//如果存在奇度顶点,则从奇度顶点出发,否则从顶点0出发for(int i=0;i
难度排序:
模板题:
poj:1041 john’s trip
(无向图欧拉回路&路径输出,推荐必须要做的模板题,很经典 。)
hdu:3018 ant trip
题解
(并查集:欧拉回路的问题)
一般难度:
POJ:1386 Play on Words
(判定有向图图欧拉路径是否存在)
POJ 1300 Door Man
(无向图欧拉通路和回路的判定+并查集)
究极(难一点的)难度:
大视野oj:太鼓达人
这道题是无意中翻到的,完全没看出来是欧拉图 。需要强大的数学功底才能进行转化(要用欧拉回路判定+dfs+回溯做) 。
这里选了一个题解(思路讲的较为清晰,有图解)
太鼓达人题解
另外,其实是为了表明我是音游狂热蒟蒻的身份才把这道题加上的 。
uva:10735
是道紫题,此处给的是洛谷传送门,自己想要在uva上测评的给了题号,(我没用VPN上uva太卡了,便没给链接) 。
洛谷题解挺详细,大家可以看看 。
poj:1637tour
一道好题(大佬如是说) 。
要用混合图欧拉图(上面的uva也是这种),但这道题还要用网络流 。
另外顺手收集的题目,想要刷题时可以做做 。
另外题解:
dzyo大佬传送门
最后,
很多方面都参考了这位大佬,大家可以看一看他的blog 。(前面也有传送门)
感谢各位大佬的博客!!!
欧拉图学习强调的是图论思想而非算法实现,要不然它的实现为什么都这么水
大家注意理解图论的本质就好,实现很简单的 。
另外如果有问题欢迎大佬们指出!!!
关于拓展的哈密顿路径问题
哈密顿路径问题与哈密顿回圈问题属于数学中的图论 。此问题是用来决定一个哈密顿图上的路径或回圈 。两个问题皆为NP完全 。为旅行推销员问题的特殊案例 。
主要是因为这个问题现在还没有解决,所以资料很少 。所以暂时不做系统研究,感兴趣可以自己gg 。
讲完后的最后一些想法和反馈 关于算法
我发现这是一个很神奇的东西,神奇到Wiki都没有提到过,欧拉图竟然是纯粹的图论情怀产物,一般遇不到,解决方法也很暴力,但主要重点在思维上 。
我因为查阅资料的方式只有看别人的博客和Wiki,所以知识量有限,无法做到完全学术性精确 。因此用这篇来简单讲一下 。
欧拉图本身
其实对于欧拉图,我感觉它还是挺小众的,我经常做题看不懂题解什么的 。而且大家都不怎么讲的清楚 。反正做完感觉除了我做课题技术见长,代码实现能力还是很菜 。
反正快乐过头 。