[SGU 286]Ancient decoration(二分图匹配)

从今天开始,我要在这里开始写王正宇大牛每天给我留的题的解题报告。

[题目描述]

说有一个很奇怪的国家,这个国家修路,然后这个路是双行线,然后最NB的地方在于每个点的度都是一个偶数K,说现在这个国家要搞节日活动,要decorate一些路。要decorate的这些路有这样一个特点,就是这些路所构成的子图必须包含原图所有点,并且每个点的度都为2。

[题目分析]

最开始我想了一个方法,但是发现我二了。是一个最简单好像的方法,就是这样的:实际情况就是一个个独立的圈,然后我们来找圈。把这个模型想象成最小路径覆盖,同样是拆一点为两点,只不过这一会就是把无向边拆成两个有向边。但是有一个很大的问题在于,如果对于这个二分图进行Hunary的话,找到的肯定是尽量大的环,但是会出现误判两个点自己成环的情况。所以需要一个很好的方法来防止这种情况的发生。

这个图最大的特点我们发现是这样的,就是说一个点的度数是偶数,既然是这样,那么这个图一定存在一个欧拉回路。那么既然有欧拉回路,那么这个欧拉回路上就是一个个的环,所以一定满足题目的要求。因此我们可以按照欧拉回路的方向进行重定向。这个题还需要注意一点就是,这个K可能很大,所以用dfs可能会爆栈,我最开始就是写了递归,出了问题。后来找国家集训队作业,发现这道题貌似是一个很难想的题,大多数人都没有写,只有郭华阳写了,发现那里写着,必须用非递归,否则会爆栈,改成非递归。AC

[代码]:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值