内向基环树

基环树

基环树,也是环套树,是一种有 n 个点 n 条边的图,简单地讲就是树上在加一条边。它形如一个环,环上每个点都有一棵子树的形式。
**基环内向树:**每个点出度为 1(因此每个环上点的子树,儿子指向父亲)
**基环外向树:**每个点入度为 1(因此每个环上点的子树,父亲指向儿子)

基环树的关键就是找到环,可以先把环当作这个无根树的 “根” ,也就是把环当成一个点(先不管它),这样一颗基环树就变成了一个普通的树,然后先按照解决普通树的方法对“根”的所有子树依次处理求解答案,最后在单独对环上所有的点进行操作求解最终答案即可。

2876. 有向图访问计数

内向基环树
对于在基环上的点,其可以访问到的节点数,就是基环的大小。
对于不在基环上的点 x,其可以访问到的节点数,是基环的大小,再加上点 x 的深度。这里的深度是指以基环上的点 root 为根的树枝作为一棵树,点 x 在这棵树中的深度。这可以从 root 出发,在反图上 DFS 得到。
注意题目给出的图可能不是连通的,可能有多棵内向基环树。

c

你可能感兴趣的:(算法精选,java)