首页 > 其他分享 >图论

图论

时间:2023-10-19 19:34:24浏览次数:31  
标签:图论 后代 祖先 text 路径 两条 LCA

1. 树上简单路径

树上简单路径 \((u,v)\) 的关键是 LCA。具体而言,通过端点的 LCA 节点 \(p\),可以将 \((u,v)\) 拆分为两条祖先-后代链 \((u,p)\),\((v,p)\),利于处理。以下讨论的路径均为简单路径。

1.1 基础

LCA 若干种求法:

  1. 暴力跳父亲

  2. 倍增

  3. 重链剖分

  4. 通过 dfs 序转成 RMQ

  5. 通过欧拉序转成 加减 1RMQ(当然也可以转成普通 RMQ)

路径 \((u,v)\) 之间的距离(边权):\(d_u+d_v-2d_{\text{LCA(u,v)}}\)。(\(d_u\) 为点 \(u\) 到树根的距离)。

路径 \((u,v)\) 之间点权和:\(d_u+d_v-d_{\text{LCA(u,v)}}-d_{fa_{\text{LCA(u,v)}}}\)。(\(d_u\) 为点 \(u\) 到树根的点权和)。

1.2 判断点是否在路径上

两种方法。设判断 \(p\) 是否在 \((u,v)\) 上。

  1. 通过距离判定:若 \(p\) 在 \((u,v)\) 上,则一定满足 \(\text{dis}(u,p)+\text{dis}(p,v)=\text{dis}(u,v)\)。其中 \(\text{dis(x,y)}\) 表示 \(x,y\) 之间的边的数量。

  2. 通过位置关系判定:

    首先考虑祖先-后代链,若 \(p\) 不在路径的端点上,则其中一个端点在 \(p\) 的子树内,另一端点在 \(p\) 的子树外。

    对于非祖先后代链也是类似的,将其拆分成两条祖先后代链,特判 \(p\) 在 LCA、\(u\)、\(v\) 处的情况后,和祖先-后代链做法一致。

1.3 两条路径

主要讨论两条路径的交。这里的交定义为两条路径的公共点集。

1.3.1 判断两条路径是否相交

引理:两条路径相交,则其中一条路径的 LCA 一定在另一条路径上。

首先考虑两条祖先-后代链的相交情况 \((a,b),(c,d)\)(其中 \(a\) 为 \(b\) 的祖先,\(c\) 为 \(d\) 的祖先),则 \(a\) 在 \((c,d)\) 上或 \(c\) 在 \((a,b)\) 上。

将其余情况转成上述情况。即满足 \(\text{lca}(a,b)\) 在 \((c,d)\) 上或 \(\text{lca}(c,d)\) 在 \((a,b)\) 上。

1.3.2 两条路径相交部分长度

同 1.3.1 类似地考虑两条祖先-后代链。若两条路径有交,则靠下的端点为 \(\text{lca(b,d)}\),靠上的端点为 \(a,b\) 中深度较大的节点。

将其余路径拆成祖先-后代链,分别计算相交的长度。由于拆分成的祖先-后代链无公共边,所以相交部分长度不会算重。

标签:图论,后代,祖先,text,路径,两条,LCA
From: https://www.cnblogs.com/sprads/p/17775442.html

相关文章

  • 【图论】二分图的判定 学习笔记
    二分图的判定记无向图\(G=(V,E)\),若存在点集\(A,B\)满足:\(A\cupB=V\)\(A\capB=\varnothing\)\(\foralle=(u,v)\inE\),满足\(u,v\)不同时在\(A\)或\(B\)中。则称图\(G\)为二分图,\(A,B\)分别称作二分图的左部与右部。二分图的判定定理下面三......
  • 图论2
    Week10P1636Einstein学画画知识点:欧拉路存在欧拉路的条件:图是连通的,有且只有2个奇点。存在欧拉回路的条件:图是连通的,有0个奇点。思路:统计所有点的度数:如果是奇数结果加一;如果是偶数则是途中的点,最后结果除以二。注意:连成一串的点所有点的度都是偶数,但是可以一笔......
  • 图论
    Week9图论P5318【深基18.例3】查找文献思路:用vector存单向图,排序,深搜光搜注意:“如果有很多篇文章可以参阅,请先看编号较小的那篇”,需要排序(按终点由小到大排列,终点相同则起点有小到大#include<bits/stdc++.h>usingnamespacestd;structedge{ intu,v;};v......
  • 图论的一些知识
    tarjan算法虚树DAG剖分矩阵树定理最小树形图()斯坦纳树(感觉可以看看?)同余最短路平面图and对偶图线性规划网络流一般图最大匹配Prüfer序列竞赛图稳定婚姻问题2-sat仙人掌Dilworth定理()tarjan算法有向图\(\to\)强连通分量无向图\(\to\)广义圆方树......
  • 搜索与图论2.2-Floyd算法
    一、简述\(Floyd\)算法是一种可以快速求解图上所有顶点之间最短路径的算法。\(Bellman-Ford\)和\(Dijkstra\)算法求解的都是从一个起始点开始的最短路。如果想要求解图中所有顶点之间的最短路,就需要枚举每个点做为起点,这样十分低效。\(Floyd\)算法(也称\(Floyd-Warshall\)......
  • 图论总结
    图论树和图的存储`树是特殊的图,无环的联通图图分为有向图和无向图,无向图是一种特殊的有向图`邻接矩阵存稠密图,空间复杂度\(O(n^2)\)g[u][v]=w;邻接表voidinit(){ for(inti=0;i<N;i++) h[i]=-1;}voidadd(inta,intb){//在链表头插......
  • Codeforces Round 903 (Div. 3) F. Minimum Maximum Distance(图论)
    CodeforcesRound903(Div.3)F.MinimumMaximumDistance思路对标记点更新fg,从0开始进行bfs,更新d1为所有点到0的距离获得到0最远的标记点L,从L开始bfs,更新d2为所有点到L的距离获得距离L最远的标记点R,从R开始bfs,更新d3为所有点到R的距离遍历所有点,这个点与标记点的最大距......
  • 图论
    \(DFS\)\(DFS\)全称是\(Depth\First\Search\),中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。\(DFS\)最显著的特征在于其递归调用自身。同时与\(BFS\)类似,\(DFS\)会对其访问过的点打上访问标记,在遍历图时跳过已......
  • 图论——树上问题 学习笔记
    图论——树上问题学习笔记目录树的直径树的重心树的中心经典问题1:最小化最大距离树的直径定义树上任意两节点之间最长的简单路径即为树的直径。显然,一棵树可以有多条直径,他们的长度相等。性质若树上所有边边权均为正,则树的所有直径有交,且中点重合;有树的直径\((p,q......
  • 图论
    图论这……感觉是知识点多,算法多,但用的频率不一定高,容易忘记,这里就整点板子防老年痴呆欧拉路径即一笔画问题,定义为:图中经过所有边恰好一次的路径叫欧拉路径。如果此路径的起点和终点相同,则称其为一条欧拉回路。注意图必须连通,可用并查集或dfs判断关于判断欧拉路径是否存在:以......