非混合图欧拉路题集


前置技能:

非混合图欧拉路(一笔画)


hdu1878 欧拉回路

题意:

给定图,判断是否存在欧拉回路

分析:

模板题
先判断是否连通(并查集)
然后用度数判断就行了


hdu1116 Play on Words

题意:

输入n个单词,问能否把所有单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(如acm、malform、mouse,单词接龙?),输入中可以有重复单词。

分析:

字母看成节点,单词看成有向边,问题就变为判断图中是否存在欧拉路。


hdu3018 Ant Trip

题意:

给n个点,m条边,问最少几笔画把所有边连起来

分析:

几笔画问题。
欧拉回路变形,先判断一共有多少个连通块,假如一个连通块所有点度数为偶数,答案为1,否则就是奇数度顶点数量/2,累加求和。


poj2230 Watchcow

题意:

给定图,输出任意一种欧拉路径方案

分析:

输出欧拉路径的裸题

了解前置技能就能直接做


poj1041 John’s trip

题意:

从原点出发经过每条边一次,最后回到自己原点的地方。输出最短路线,且街道的字典序最小。

分析:

这题主要问题是如何处理街道的序号字典序最小。
用g(i,j)=k表示节点i可以通过街道j到达街道k
dfs的过程中从前开始遍历,递归最先找到的没有标记的 j ,这样就能保证字典序最小

点击查看代码


poj1300 Door Man

题意:

入起点m和n,共n个点,并且给出路径,问从m出发能否回到0点

分析:

如果m=0,则题目为判断是否有欧拉回路,否则为判断是否有欧拉路
输入比较复杂


hdu5883 The Best Path

题意:

给定无向图,每个节点都有权值,求欧拉路(或欧拉回路),
使得路径上经过节点的权值异或和最大,输出这个最大值。

分析:

欧拉路每个节点经过的次数为 该点的度/2
起点和终点多走一次 (回路则起点多走一次)
根据异或的性质,偶数次的异或值为0,因此只有经过次数为奇数次才对答案有贡献
我们先统计每个点的度

1 .如果所有点的度数都为偶数,则为欧拉回路,
先把所有点的 异或值计算起来 (经过奇数次的点才有贡献)
因为起点多走一次,我们枚举起点,再把前面求出来的数值异或上起点,找到最大值就行了。

2 .如果只有两个点的度数为奇数,则为欧拉路
和前面一样要把所有点的 值异或起来 (经过奇数次的点才有贡献),
因为起点和终点多走一次,所以我们遇到 度为奇数的点,经过次数加1 之后再判断是否对答案有贡献
最后输出即可

点击查看代码


poj2513 Colored Sticks

题意:

你得到n个木棍。每根棍子的每一个端点都有颜色。有没有可能把木棍排成一条直线,使触碰的端点颜色相同。
输入是n个木棍两端颜色的单词。

分析:

容易想到用map把单词变成id,但是这题的数据量太大了用map会tle
所以要用字典树trie存
点击查看代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值