基环树
文章目錄
- 概念
- 找環
- 拓撲排序
- dfs
- 問題解決方法:
- 斷環法:
- 題目:
- 二次dp法
- 題目:
- 斷環復制法
- 題目:
參考博客
概念
基環樹 = n個點n條邊的圖 = 1棵樹 + 1個環
無向樹(N點N邊無向圖)
外向樹(每個點入度=1)
內向樹(每個點出度=1)
以上三種樹有十分優秀的性質,就是可以直接將環作為根。就可以對每個環的子樹進行單獨處理,最后再處理環
找環
拓撲排序
處理無向圖
可以找出環上的所有點
入度大于等于2的點就是環上的點
code
dfs
處理有向圖,碼量小
mark就是環上的一個點
問題解決方法:
斷環法:
每次斷開環上的一條邊跑一遍答案,然后去最大值
適合:數據較小,且環不會影響答案的題目
題目:
[NOIP2018 提高組] 旅行
二次dp法
對于環,我們可以像環形dp一樣將一條邊強行斷開處理,然后強行連上再處理一遍
適合:跑滿足正確性的
題目:
ZJOI2008騎士
斷環復制法
我們依舊像環形dp一樣斷開環,然后再復制一遍放在后面
適合:多個需要維護的
題目:
IOI2008 Island
AcWing 289. 環路運輸
總結
- 上一篇: 整除的判定
- 下一篇: 联邦学习:按Dirichlet分布划分N