摘要: 题目链接:http://poj.org/problem?id=1041思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路。一个无向图存在欧拉回路的充要条件是每个顶点的度是偶数, 对于有向图存在欧拉回路的条件是每个顶点的出度等于入度(就是出去的边数等于进来的边数)。根据这个首先判断存在欧拉回路不, 如果存在然后用DFS去找欧拉回路。DFS的思想等效于先找一个环,然后对环上所有点递归DFS,并且把这些递归产生的路插入这个环中。 实际上程序实现起来很简单,递归完成后不需要单独做插入。由于图已经保证连通,首先用度数是否是偶数,判断图是否是 阅读全文
posted @ 2013-08-16 21:19 ihge2k 阅读(644) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2513思路:题目还是很简单的,就是判断是否存在欧拉路径,我们给每个单词的头和尾映射序号,统计度数。对于给定的无向图,当且仅当图连通并且奇数度数为0或者2。一开始我报着一丝的希望用map映射,结果毫不犹豫的TLE,然后改成字典树映射就过了。http://paste.ubuntu.com/5992411/ 阅读全文
posted @ 2013-08-16 19:49 ihge2k 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1956思路:先将无向边定向,比如13,可以定它的方向为1->3,1的出度++,3的入度++即可。读入的时候如果遇到无向边,把这条边加入待建的网络中,流量为1。读入完后,然后用出度减入度得到x,如果x为奇数,肯定不存在欧拉回路,如果没有奇数,就用最大流求解。如果x大于0,则建一条s(源点)到当前点容量为x/2的边,如果x小于0,建一条从当前点到 t(汇点)容量为|x/2|的边。然后求最大流,如果是满流(即s出的流==t入的流即可,s指的是建图的时候连接s的边的容量和)就满足欧拉回路。http:/ 阅读全文
posted @ 2013-08-16 12:13 ihge2k 阅读(312) 评论(0) 推荐(0) 编辑