![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 67
cszhpdx
欸嘿
展开
-
LCA算法
LCA (Least Common Ancestor) 就是 最近公共祖先,就是在一个树上找到两个点最近的公共祖先模板题暴力暴力的想法极其简单,比如我们可以 DFS 预处理出每个点的深度,然后通过暴力使它们的深度相等,然后每次都让它们向上走一个节点倍增求LCA这个想法慢在哪呢?慢在一个一个往上跳的地方,我们其实可以一段一段的往上跳,这就是倍增 LCA 最核心的地方,但是怎么计算每个点跳完一段之后的位置呢?我们可以预处理。那怎么设计每一段的长度保证每个点都可以通过一段一段的跳都能到达任意一点呢?很原创 2021-06-05 11:06:02 · 2720 阅读 · 0 评论 -
P4159 [SCOI2009] 迷路
题目传送门 P4159 [SCOI2009] 迷路如果完全没有思路请移步至 P2233 [HNOI2002]公交车路线如果没学过矩阵乘法可以去P1939【模板】矩阵加速(数列)P3390 【模板】矩阵快速幂看看这两题的题解要是不会快速幂请去 P1226 【模板】快速幂||取余运算然后我们通过 P2233 知道了,对于一个邻接矩阵为 GGG 的,边权只有 0 1 的图,从 iii 走到 jjj 恰好走 TTT 个单位的方案数是 GijTG^T_{ij}GijT,那么考虑把这道题转换成边原创 2021-06-05 11:11:56 · 104 阅读 · 0 评论 -
poj3417 Network
题目传送门给你一颗树,还有一些别的边,先切除一条树边,然后切除一条非树边,有多少种方法可以切成两个不连通的部分首先对着这棵树,加上一条边后一定会出现环,比如对于某棵树的一部分x 表示非树边,我们发现,在这个环上任意一条树边切除之后显然只能切除那条非树边,而且如果我们再加上别的边显然切除这个环上的一边之后还是只能切除非树边,很容易联想到对于每个向这样的连接 x y 两点的环,这个环上每一条边切除之后都只能切除那条非树边,也就是如果切它就只有一种方案于是我们统计这样的环上边的总数,或者我们可以换一种理原创 2021-06-05 11:14:37 · 61 阅读 · 0 评论 -
图的存储笔记
众所周知,图的存储有三种,分别是:1.邻接矩阵2.邻接表3.链式向前星邻接矩阵邻接矩阵就是一个矩阵,比如用一个二维数组 aaa 来存储, aaa[iii][jjj]表示节点 iii 与节点 jjj 之间有没有边,如果有,权值是多少,比如下面这个有向图(没有权值):那么它就可以用邻接矩阵表示(0表示没有边,1表示有边):12345101000200100300000400001510100原创 2021-06-14 16:10:51 · 48 阅读 · 0 评论