基環樹DP

基環樹DP

Page1:問題

啥是基環樹?就是在一棵樹上增長一條邊。io

Page2:基環樹的幾種狀況

無向
有向:基環外向樹,基環內向樹。循環

Page3:處理問題的基本方式

1.斷環成樹
2.分別處理樹和環,以後就是考環形DP了。im

Page4:如何找無向基環樹的環?

無向圖直接找環
Alt textimg

Page5:基環內向樹

首先它是一個有向圖,它構成相似基環樹的結構,有一個特色是每一個點
都有且只有一個出度,而且環外的節點方向指向環內
若是題目說知足每個點都有一個惟一出度,則本質上就是給了咱們一個 基環內向樹森林(不僅是一個基環內向樹!!!!)
性質: 任何一個點沿着惟一出邊走都會走到環上
利用這個性質能夠隨便選一個點直接循環找到。(或者直接用無向圖找環,反正也不難寫。)集合

Page6:基環外向樹

與基環內向樹相反,它有且只有一個入度(基環內向樹是出度),而且
而且由環指向環外。
能夠把全部邊反向後,變成基環內向樹快速找環。

Page 7:BZOJ1040 騎士

N我的,每一個人都有一個戰鬥力和一個討厭的人(不是他自己),要求一
個總戰鬥力最大的人的集合,知足集合內部兩兩不互相討厭
N<=10^5

Page8:Solution

把這個討厭關係的圖畫出來,就是個基環內向樹森林,而後咱們要求最
大權獨立集。
求最大獨立集內向和外向和無向圖毫無區別,都是相鄰的不能選。
這裏的基環樹上有且僅有一個環,就是從任意環上一條邊(u,v)斷開環,分
兩種狀況,一種是選u,不選v,一種是選v,不選u,兩種狀況取最大值。
轉化成樹的話,就是那個簡單的樹形dp。
找環dfs找就好,或者從一個點順着父親一直走直到走到一個曾經走到過
的點就找到一個環了。

Page 9:IOI2008 牛逼題luo化版

求無向基環森林中的每棵基環樹的直徑之和。邊有邊權 定義兩個點的距離爲兩個點的最短路。 直徑的定義是最長的兩個點的距離 點數n<=1000 題源:BZOJ1791luo化版

相關文章
相關標籤/搜索