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的圖了。

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