随笔分类 - 树论图论
摘要:我们假设你已经熟练掌握了树上的各项基础技术. 下面来做一下题吧! 1. [NOIP2007 提高组] 树网的核 简明题意: 给定一棵有 个结点的带权无根树, 在其直径上找到一段长度不大于 的链 (称为核, 可退化为一个点), 使得树上的其他结点到该路径距离的最大值 (称为偏心距) 最
阅读全文
摘要:1. 割边和割点 首先我们 dfs 一遍构造出 dfs 树并排出 dfn 序. 显然这棵树没有横叉边. 考虑割边的形成条件. 显然割边只能是树边, 因为非树边会和对应的树上的路径组成环. 考虑边 , 其中 是 的儿子. 因为没有横叉边, 我们只需要保证从 及其子
阅读全文
摘要:内容受作者水平所限难度不高. 需要进一步学习的推荐 这一篇. 1. 常见模型 先有模型, 而后有建图技巧. 二分图和网络流那一套建图不是这篇文章讨论的内容. 看上去全是最短路相关的建图( 本来想写 2-SAT 的, 但是那部分内容已经包含在 SCC 和 BCC 那一篇文章里了. 1. 差分约束系统
阅读全文
摘要:为了保证文章的整体简洁,代码就不放了。 upd: NOIP2022 上被教育了. (虽然问题在于我不会dp 1. SCC 1. luoguP2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G 考虑一个 SCC 内的所有点互相可达,我们完全可以先缩点。 那么能从其他所有点到达的
阅读全文
摘要:## 别急, 慢慢更( [OI-wiki 图论部分](https://oi-wiki.org/graph/) 有简单的东西,也有一些奇怪的算法。 总结: 学好 Kruskal 就对了. ## 0. 一点前置习题 ### 1. luoguP4047 [JSOI2010]部落划分 实际上就是 Krusk
阅读全文
摘要:0. 一些前置习题 1. luoguP1608 路径统计 实际上只需要开一个 cnt 记录一下到当前点的最短路有几条就行了. 跑 dijkstra 的时候, 如果是严格大于就直接把答案覆盖上, 等于就将方案数相加. if(dis[p]==dis[u]+e[i].val)ans[p]+=ans[u];
阅读全文
摘要:参考资料: OI-wiki 0. 一些概念 首先让我们明确几个概念. 我们定义, 通过图中所有边恰好一次的通路称为欧拉通路, 若该路为回路则称为欧拉回路. 若一个图存在欧拉回路, 则称该图为欧拉图. 若不存在欧拉回路但存在欧拉通路, 该图成为半欧拉图. 无向图 (半) 欧拉图判定: 一个连通图是无向
阅读全文
摘要:出处是 lyd 的蓝书。 有向图上的必经点、必经边问题比较复杂,我们只讨论给定起点和终点 的情况。 因为 DAG 的优秀性质,考虑使用乘法原理。 首先我们在原图上做 dp 预处理出 到其他点的走法的数量 ,再在反图上做 dp 预处理出图上的点到 的走法的数量
阅读全文
摘要:今日水博客( 众所周知我们使用链式前向星存图会有这样几句话: struct edge{int to,nxt;}e[maxm]; e[++cnt]=(edge){v,h[u],val}; h[u]=cnt; for(int i=h[u];i;i=e[i].nxt) { int p=e[i].to; /
阅读全文
摘要:双连通分量的~~简单~~应用。 有向图的话就要上支配树了,可能之后会学(? 1. 无向图必经边 边双缩点。 显然一个边双内的结点间不可能有必经边,于是我们把所有的边双缩成一个点,用割边连起来,然后在形成的树上操作就行了。 代码懒得写了( 2. 无向图必经点 ~~圆方树~~点双缩点。其实就是一个东西。
阅读全文
摘要:OI-wiki 真是个好东西。 我们在求强连通分量或双连通分量的时候,常常会用 Tarjan 算法来进行缩点。 但是我们也有不用 Tarjan 的连通分量算法。 1. Kosaraju 算法 如果我们要求的是有向图上的强连通分量,使用 Kosaraju 算法是一个不错的选择。 该算法的码量相比 Ta
阅读全文
摘要:虽然说这是图上计数的问题,但是方法还是非常简单的。 我们只考虑无向图的情况。有向图只需要在无向图的环求出之后验证一下就行了。 我们不妨假设图中的点标号为 。然后我们对这个无向图的边进行定向,从度数小的点连向度数大的点,如果度数相同就从标号小的点连向标号大的点。容易发现这是
阅读全文
摘要:主要内容复读自 EI 的博客。部分符号可能会有不同。 起因是这样的,想做一道 0/1 分数规划+判负环的题,结果发现出题人卡了 bfs 判负环,放了 dfs 判负环过。遂到谷群求教 dfs 判负环的有关事宜,结果被群友教育了,于是就来学了qwq。 (虽然说这个算法只能做整数边权的图,做不了上面那道题
阅读全文
摘要:题目来源 luogu. 1. [USACO19DEC] Milk Visits S 简明题意:树上的每个结点都是黑白两种颜色之一,每次询问一条链上是否有某种颜色。 思路: 一道简单的套路题…… 两种颜色可以分开讨论,每次关注一种颜色即可。 加强一下这道题,改成询问一条链上某种颜色结点的个数。 dfs
阅读全文
摘要:## 1.图的存储与遍历 ```cpp //链式前向星存储 int cnt,h[maxn]; struct edge{int to,nxt,val;}e[maxm]; void addedge(int u,int v,int val) { e[++cnt]=(edge){v,h[u],val}; h
阅读全文
摘要:FF算法,PP算法算是作为引入,未加任何优化 FF算法 FF算法的时间复杂度与流量有关,是可以hack的。在luogu上~~能取得82分的好成绩~~。 #include <iostream> #include <cstdio> #include <cstring> #include <algorit
阅读全文
