树相关

路径求交

给出两条路径 \((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\) 即可。

两棵树直径合并

给两棵树,分别知道其直径两个端点,将两棵树用一条边连接,新形成的直径必定是四个点的两两组合之一。

遍历所有节点最小代价

二倍的边权和减去直径。

posted @ 2024-07-15 19:24  ZepX_D  阅读(11)  评论(1)    收藏  举报