Gravatar
Satoshi
积分:3003
提交:678 / 1922
动态维护树的直径即可,(注意这不是一个树而是森林), 用每棵树的第一个插入点代表这棵树,预处理每棵树的倍增$LCA$数组,则对树中任意两点的距离的询问可以在$O(logn)$的时间内求得,然后把整个森林重建一遍-----设新加入的点为$k$ 当前树的直径端点为$i$和$j$(初始的$i,j$为根结点),如果$dis(i,k)>dis(i,j)$那么把直径的端点$j$换成$k$,如果$dis(j,k)>dis(i,j)$那么把直径的端点$i$换成$k$,最后得到的就是树的真正直径.