首页 > 其他分享 >LUOGU_图论

LUOGU_图论

时间:2024-10-31 11:45:36浏览次数:1  
标签:图论 LUOGU 短路 textbf DFN mathcal times

LUOGU_图论

ST表+DFN序LCA

每次在自己的DFN序位置放入自己的父亲

询问的时候l+1

ST表+欧拉序LCA

\(u,v\) 在欧拉序中的第一个位置之间的深度最小位置就是LCA


树的直径

相距最远的两个点

\(\max_{u,v}dis(u,v)=\max_{u,v}(dep_u+dep_v-2dep_{lca(u,v)})\)

边权非负:两次BFS

边权有负:DP

动态维护直径 P6845 Dynamic Diameter:


树的重心

重心最多有两个,无根树计数时如果需要钦定根,可以钦定重心。


最短路

单源最短路

一轮 Bellman-Ford 松弛可以看作一次 \(\{min,+\}\) 矩阵乘法

\[\textbf{E}=\begin{Bmatrix}e_{1,1}&\cdots&e_{n,1}\\\vdots&\ddots&\vdots\\e_{1,n}&\cdots&e_{n,n}\end{Bmatrix} \]

\(\textbf{E}^{n-1}\times \vec d\) 则得到最终结果

P6190 魔法:\(\textbf{E}^{n-1}\times (K\times \textbf{E}^{n-1})^k\times\vec d\)

P1266 速度限制:分层图:图论中一个点表示的信息可以是很丰富的,当我们觉得一个点的信息单薄时,可以考虑像 dp 状态加维度一样给点也加一维信息。

P2149 Elaxia的路线:最短路径图,分为同向与异向,处理出同时在最短路上的边,在这上面找最长链即可。

差分约束:\(c_i\le c_j+x\)

P7624 地铁:二分环长上下界,并将环长 $\sum L_i+k\times mid $,将二分的环长与常数分离开,这样可以通过 \(k\) 的正负判断 \(k\) 应该增大还是减小,这样也可以辅助发现合法的答案一定是一个区间。

多源最短路:

全源最短路:

无负环:Dij\(\mathcal O(nm\log m)\)

有负环:Johnson \(\mathcal O(nm\log m)\)

好写+稠密图:Floyed \(\mathcal O(n^3)\)


连通性

P3825 游戏:首先可以枚举 \(x\) 是 \(a,b,c\) 的哪一个 \(\mathcal O(3^d(n+m))\) 跑 2-SAT。但 \(x\) 只需要选择 \(a,b\) 就可以覆盖 \(A,B,C\) 三种情况了,即不论选择 \(A,B,C\) 的哪一个, \(x=a,b\) 中总有一种情况可以统计到。

P5058 嗅探器:DFN序确定相对位置,其实就是求A,B之间的割点,这里以A为根,通过DFN序确定其在树上的相对位置。(告诉我们Tarjan并不只是一个黑盒算法)

弱联通

连通性删边:即删去一些边后连通性不变,在一些有特殊节点的图上,这样往往可以使得最后有用的边所剩无几。

P7737 [NOI2021] 庆典:先缩点,再删边,删成一个叶向树了。


欧拉回路

找欧拉回路通过DFS搜索,并加入当前弧优化。

标签:图论,LUOGU,短路,textbf,DFN,mathcal,times
From: https://www.cnblogs.com/lupengheyyds/p/18517394

相关文章

  • LUOGU_进阶数据结构
    LUOGU_进阶数据结构二叉堆P10977CuttheSequence:因为DP的值是单调递增的,所以可能的决策点只有最远的合法位置与那些后缀最大值段的左端点,用单调队列+可删除堆(懒标记)做。如果\(\exista<0\),怎么做?CDQ优化DP,可以做!!并查集P10350ModernizacjaBajtocji:把二选一的居民放进一......
  • 基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据
    时间序列数据表示了一个随时间记录的值的序列。理解这些序列内部的关系,尤其是在多元或复杂的时间序列数据中,不仅仅局限于随时间绘制数据点(这并不是说这种做法不好)。通过将时间序列数据转换为图,我们可以揭示数据片段内部隐藏的连接、模式和关系,帮助我们发现平稳性和时间连通......
  • 算法学习笔记3:图论
    图论拓扑序列有向无环图一定存在拓扑序列,通过入度为0来判断该点是否可以加入队列。强连通分量定义:在有向图G中,如果两个顶点u,v间有一条从u到v的有向路径,同时还有一条从v到u的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向非强连通图......
  • 《 C++ 修炼全景指南:十七 》彻底攻克图论!轻松解锁最短路径、生成树与高效图算法
    摘要1、引言1.1、什么是图?图(Graph)是计算机科学和离散数学中一种重要的数据结构,用来表示一组对象之间的关系。一个图由顶点(也称为节点,Vertex)和边(Edge)组成。顶点表示实体,而边则表示实体之间的关联或连接关系。根据边的性质,图可以分为无向图和有向图。在无向图中,边没有方向......
  • 算法汇总整理篇——回溯与图论的千丝万缕及问题的抽象思考
    回溯算法(重中之重)回溯法解决的问题都可以抽象为树形结构,集合的大小就构成了树的广度,递归的深度就构成了树的深度。(回溯的核心:分清楚什么数据作为广度,什么数据作为深度!!!!!)voidbacktracking(参数){if(终止条件){存放结果;return;}for......
  • 【代码随想录Day54】图论Part06
    冗余连接题目链接/文章讲解:代码随想录importjava.util.Scanner;publicclassMain{privateintnumberOfNodes;//节点数量privateint[]parent;//存储每个节点的父节点//构造函数初始化并查集publicMain(intsize){numberOfNod......
  • 【代码随想录Day53】图论Part05
    并查集理论基础题目链接/文章讲解:并查集理论基础|代码随想录寻找存在的路径题目链接/文章讲解:代码随想录importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){intnumberOfElements,numberOfConnections;Scann......
  • 【代码随想录Day52】图论Part04
    字符串接龙题目链接/文章讲解:代码随想录importjava.util.*;publicclassMain{//使用广度优先搜索(BFS)方法计算从beginWord到endWord的最短转换序列长度publicstaticintfindLadderLength(StringbeginWord,StringendWord,List<String>wordList){......
  • 【C++ 图论 DFS】1443. 收集树上所有苹果的最少时间|1682
    本文涉及知识点C++图论C++DFSLeetCode1443.收集树上所有苹果的最少时间给你一棵有n个节点的无向树,节点编号为0到n-1,它们中有一些节点有苹果。通过树上的一条边,需要花费1秒钟。你从节点0出发,请你返回最少需要多少秒,可以收集到所有苹果,并回到节点0。无向......
  • Luogu 的脚本
    1. extend-luogu//==UserScript==//@nameextend-luogu//@namespacehttp://tampermonkey.net///@descriptionMakeluogumorepowerful.//@description:zh使洛谷拥有更多功能//@iconhttps://raw.fastgit.org/extend-luogu/extend-lu......