随笔分类 -  树 - 基环树

摘要:题目大意:给定一棵 N 个节点的基环树,求各个点到环的最小距离。 题解:除了找环的必须参数之外,对每个点维护一个 fa 即可。 代码如下 cpp include define fi first define se second define pb push_back define mp make_p 阅读全文
posted @ 2019-03-29 14:49 shellpicker 阅读(183) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N 个点的外向树森林,点有点权。从该树中选出若干顶点组成一个集合,满足任意相邻的两个顶点不同时出现在该集合中,求这样集合中点权和的最大值为多少。 题解:与树相比,该题多了环这个结构。对于环上任意一条边来说,边的端点不可能同时被选取,因此,可以选择环上任意一条边,将其断开,答案不变 阅读全文
posted @ 2019-02-18 19:24 shellpicker 阅读(163) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N 个点,N 条边的无向图,现给每条边定向,求有多少种定向方式使得定向后的有向图中无环。 题解:显然,这是一个外向树森林,定向后存在环的情况只能发生在基环树中环的位置,环分成顺时针和逆时针两种情况,其他边方向随意。因此,记外向树森林中环的大小为 $w[i]$,则答案为$$2^{n 阅读全文
posted @ 2019-02-18 17:49 shellpicker 阅读(192) 评论(0) 推荐(0)
摘要:题目大意:给定一棵 N 个节点的内向树森林,求该内向树森林的最小环的大小(按边计算)。 题解:先删链,再计算环的大小,统计答案即可。 代码如下 cpp include using namespace std; const int maxn=2e5+10; int n,ans,to[maxn],ind 阅读全文
posted @ 2018-12-31 15:48 shellpicker 阅读(127) 评论(0) 推荐(0)
摘要:题目大意:给定一个 N 个节点的内向树森林,求从每个顶点出发能够到达的最多不重复顶点的个数是多少。 题解:内向树森林是由一个或若干个环加若干条链构成。可以先按照类似于拓扑排序的规则进行删链,再对环上的点计算答案,最后计算链上的答案即可。 代码如下 cpp include using namespac 阅读全文
posted @ 2018-12-31 15:43 shellpicker 阅读(183) 评论(0) 推荐(0)