他出题人要是敢砍掉一条边然后保证连通,我就敢做!
传送门
题解
题意:给定一个基环树森林,求直径和。
首先,随便拎一棵基环树出来,然后找到环。
考虑在环上DP。
先对于环上每一个节点的子树,来一遍DFS,求出从根到最深节点的距离以及子树直径。
按照环上DP的套路,先破环为链,然后复制一遍。
然后就可以DP了,但是直接暴力DP是$O(n^2)$的,所以开个单调队列优化一下即可。
恶心的是这题还卡常,自带大常数的蒟蒻我卡了好久才过。
每棵基环树的直径最后要和每个子树的直径取个max。
对于每一棵基环树分别处理即可。
代码
1 |
|