基环树学习笔记

1.定义

基环树,又称环套树,n个点n条边,也就是一棵树多一条边,形成唯一的环,这是保证这n个点n条边构成的是一个连通图的时候才是唯一环,如果图不连通但是每个连通块点数都等于边数的时候这个图就是一个基环树森林,可以有多个环

如果一张有向弱连通图每个点的入度都为1,则称它是一棵 基环外向树。

如果一张有向弱连通图每个点的出度都为1,则称它是一棵 基环内向树

2.常见解题套路

2.1.

将环提出来,此时图就变成了一个环的节点上挂着一些子树,然后将子树的信息合并到环的节点上,再解决环上的问题即可

2.2.

忽略环的一条边,当成树来求解,最后加上忽略的边

3.例题

3.1.[ZJOI2008]骑士

本题类似于没有上司的舞会,dp[i][0/1]表示选/不选第i个人的最大值,所以:

\[\begin{cases} dp_{u,1}=\sum_{(u,v)∈E}dp_{v,0} \\ dp_{u,0}=\sum_{(u,v)∈E}max(dp_{v,0},dp_{v,1}) \end{cases} \]

因为有n个骑士,n条关系,所以按关系连边后会形成一个基环树森林,不能直接树形dp,采取方法2.2,先找环,再求解

3.2.「NOIP2018」旅行

采用方法类似于2.2,对于m=n-1,直接DFS,对于m=n,分别枚举这m条边,将其删去,再DFS找最小即可

3.3.[Ioi2008] Island 岛屿

采用方法类似2.1,先求每棵子树的直径,在断环为链用单调队列求解

posted @ 2024-02-23 12:37  wangsiqi2010916  阅读(8)  评论(0编辑  收藏  举报