基环树学习笔记
1.定义
基环树,又称环套树,n个点n条边,也就是一棵树多一条边,形成唯一的环,这是保证这n个点n条边构成的是一个连通图的时候才是唯一环,如果图不连通但是每个连通块点数都等于边数的时候这个图就是一个基环树森林,可以有多个环
如果一张有向弱连通图每个点的入度都为1,则称它是一棵 基环外向树。
如果一张有向弱连通图每个点的出度都为1,则称它是一棵 基环内向树
2.常见解题套路
2.1.
将环提出来,此时图就变成了一个环的节点上挂着一些子树,然后将子树的信息合并到环的节点上,再解决环上的问题即可
2.2.
忽略环的一条边,当成树来求解,最后加上忽略的边
3.例题
3.1.[ZJOI2008]骑士
本题类似于没有上司的舞会,dp[i][0/1]表示选/不选第i个人的最大值,所以:
因为有n个骑士,n条关系,所以按关系连边后会形成一个基环树森林,不能直接树形dp,采取方法2.2,先找环,再求解
3.2.「NOIP2018」旅行
采用方法类似于2.2,对于m=n-1,直接DFS,对于m=n,分别枚举这m条边,将其删去,再DFS找最小即可
3.3.[Ioi2008] Island 岛屿
采用方法类似2.1,先求每棵子树的直径,在断环为链用单调队列求解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律