1.基環樹
定義:有\(n\)個點和\(n\)條邊的圖,就是給樹連了一條邊,此時圖中恰好只有一個環
解決這類問題時,通常斷環,變成普通的樹的問題,然後再特殊處理環
P2607 [ZJOI2008] 騎士
click
斷環成樹後就跟沒上司一樣是個樹形dp,注意森林,long long就行了,具體細節見這裡
P5022 [NOIP2018 提高組] 旅行
click
- \(m = n - 1\)
就是樹
肯定以\(1\)為起點,每次向下搜之前對能到的城市排個序,挑小的走
期望\(60pts\),實測\(60pts\)
這裡面排序那個for上限應該是n寫錯了所以56
- \(m = n\)
基環樹,沒森林
考慮列舉刪掉的邊,每刪一條,就跑一遍情況1,是\(O(nm)\)的
谷上可過,gxyz過不了,T了3個,這是穀子結果,應該是更答案慢了些
可以剪枝最佳化,就是每走一步就看優不優,不優就不走了
like this
P4381 [IOI2008] Island
click
題目要求的是基環樹森林中每個單元的直徑之和
我們考慮一下基環樹內的直徑型別:過環的和不過環的
(ps:不過環的放這圖是我一開始沒想到)
對於不過環的,可以預處理,接下來考慮帶環的
如果\(i,j\)是直徑出入環的兩點,那麼該直徑可以分解為環上一部分和以\(i,j\)為端點的兩根鏈
暴力就是列舉\(i,j\),將對應部分求得並加在一起,從中取最大與第一種情況比最大就行
可以混\(50\)