路径求交
给出两条路径 \((a,b)\) 和 \((c,d)\) ,令 \(\texttt{x1 = LCA(a,c),x2 = LCA(a,d),x3 = LCA(b,c),x4 = LCA(b,d)}\)
取深度最大的两个记为 \(p_1,p_2\) 。
- 若 \(p_1 \ne p_2\) ,则 \(p_1,p_2\) 为路径交的两个端点。
- 若 \(p_1 = p_2\) ,此时求出 \(p_3 = \texttt{LCA(a,b)},p_4 = \texttt{LCA(c,d)}\) ,若 \(p_1\) 的深度小于 \(p_3\) 或 \(p_4\) 的深度,则路径没有交,否则路径交为点 \(p_1\)
相交路径和
设这条路径权值为 \(v_i\) ,将该路径所有点点权加 \(v_i\) ,所有边边权减去 \(v_i\) 即可。
两棵树直径合并
给两棵树,分别知道其直径两个端点,将两棵树用一条边连接,新形成的直径必定是四个点的两两组合之一。
遍历所有节点最小代价
二倍的边权和减去直径。
标签:texttt,路径,端点,两棵树,相关,直径,LCA From: https://www.cnblogs.com/ZepX-D/p/18303837