hdu3472 混合图的欧拉回路

HS BDC

题意很简单,就是串单词,如果一个单词的尾字母和另一个单词的首字母相同,则可以连接起来,给你N个单词,问:能否串成一条链?

关键在于如何建图,这题稍有不同,就是有些单词是可以翻转的,但也只能用一次而已。把二十六个字母'a'到'z'作为点,把每个单词作为边,如果某个单词首尾字母分别为a和b,则可以建一条有向边<a, b>,当然,如果此单词可以翻转,则建成无向边(a, b),显然可以想到,每个单词用且只用一次使得所有单词连通,那就是说,找到一条路径,每条边都走过一次,如果闭合,显然就是欧拉回路,现在不要求闭合,算是欧拉路径。

如果不连通,或者连通度为奇数的点多于2个,显然不会有欧拉路径。判通可以用并查集来做。

先假设有欧拉路径,对起点a,终点b,加一条弧<b, a>,因为起点出度大于入度,度小于0,定向无向边的目的就是使得起点的度增加,所以这样加弧不影响欧拉路径,但是却构成了欧拉回路,最终求得欧拉回路也能保证欧拉路径的存在。

具体实现用最大流。建图方式见我另一篇讲解:混合图的欧拉回路

转载于:https://www.cnblogs.com/ylfdrib/archive/2010/08/21/1805233.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值