DTOJ 4714. 圈

题意

对一张无重边、无自环的 nn 个点的无向图,定义圈为可以重复经过同一个点多次、但不能多次经过同一条边的环。例如,1211\to 2\to 1 不是一个合法的圈,而 12345311\to 2\to 3\to 4\to 5\to 3\to 1 是一个合法的圈。

定义无向图的双圈覆盖为:图的若干个圈,使得图中每条边恰好出现在两个圈中(无论方向)。

一个定理:如果一个图有哈密尔顿回路的话,它就一定有双圈覆盖。

现在给定一张无重边、无自环的 nn 个点的无向图,保证这个图存在哈密尔顿回路(会给出),且每个点的度数至少为 33

求它的一个双圈覆盖。

50%50\% 的数据,m10m\le 10.

对所有的数据,T1004n50,nm500T\le 100,4\le n\le 50,n\le m\le 500.

题解

一个圈相当于一条欧拉回路,求双圈覆盖相当于求一系列欧拉回路使得每条边恰好经过22次。考虑题目的特殊条件:首先是一个从11依次连到nn的环(以下把这个称为环,这上面的边称为环边),再加上若干其它边,每个点的度数不小于33

每个点的度数不小于33这个条件比较奇怪,先考虑每个点度数都为33:如果每个点的度数都是22,那么可以找到一系列欧拉回路覆盖所有边一次;考虑把边分为两组使得每组的每个点的度数都是22:因为除了环边外的边使得每个点的度数都为11,再加上间隔的环边即可,这两组再加上原来的环即符合双圈覆盖的要求。

问题剩下如何使每个点度数为33,考虑把一个度数>3>3的点uu的度数1-1:由于环的结构不能破坏要特殊考虑,设uu在环上的下一个点为ww,而与uu的非环边>1>1个。我们需要把uu的一个非环边删掉,同时加上一条等效的边,又要不破坏环的结构。设原来有一条非环边连向xx,拆掉(u,w)(u,w)再新建一个点pp,使uupp相连(即把xx替换为pp),为了不破坏环的结构,把ppww相连,最后把xxpp相连以代替原来的边,这样pp刚好有33条连边,且uu的度数恰好减少11,其他点都不变。一直这样下去,就可以构造出所有度数都为33的图了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章