P6419 奇妙的做法

P6419 奇妙的做法

六月 16, 2021

分析:我们可以将这个图进行分析,许多关键点可以形成一个连通块,连通块里的点的答案一定是连通块的路径长度*2减去到一个最深的点的距离。

求连通块很简单,我们随便选取一个关键点,然后跑出父亲节点,之后从每个关键点往父亲跳,就能求出连通块和距离。

显然这个连通块的每个叶子节点都是关键节点,那么我们的最深的点只可能是这个连通块的直径的两个端点之一。

对于不在连通块的情况,我们发现这个点是某个连通块节点中的子树,那么我们直接找这个点的祖先在连通块中最深的点(想一想,为什么),然后直接加到祖先就行了。