
图论
文章平均质量分 79
cheng__yu_
这个作者很懒,什么都没留下…
展开
-
图论习题
习题2020秦皇岛 K. Kingdom's Power2020秦皇岛 K. Kingdom’s Power链接:https://codeforces.com/gym/102769/problem/K题意: n 个城市可以看做一棵以 1 为根的树,在城市 1 有无穷支军队。每天可以派遣一支军队移动一次。问最少需要几天才能使军队走遍所有的城市思路:容易想到直接贪心,在叶节点的位置的军队,要么就是从其他叶节点走过来,要么就是从 1 号节点走过来。首先将每个节点的子节点按照叶节点的深度排序,按贪心的思原创 2020-10-29 22:37:16 · 280 阅读 · 0 评论 -
树上启发式合并习题
树上启发式合并(dsu on tree)算法流程习题CF600E. Lomsat gelral算法流程首先遍历轻儿子,遍历完之后将数据清空。然后遍历所有重儿子数据不清空此时继续遍历轻儿子,此时就可以统计答案了最后根据:当前 u 是否为 fa 的轻儿子,来决定是否保留数据。如果是轻儿子就清空清空的时候,都是先清空轻儿子的信息,然后会保留重儿子的信息,后面又会重新遍历轻儿子,因而可以保证数据正确。时间发复杂度:一个点距离根节点,最多经过 log2nlog_2nlog2n 条轻边,因此最多被访问原创 2020-10-26 22:01:31 · 945 阅读 · 0 评论 -
点分治习题
点分治点分治步骤P3806 【模板】点分治1点分治步骤每次找到一个重心,以重心为根开始分治。先 dfs1 拿前面的数据来更新答案,然后 dfs2 将当前子树的数据也更新上去。每次换一个重心的时候,都需要清空 cnt 数组。这些需要重新记录。P3806 【模板】点分治1链接:https://www.luogu.com.cn/problem/P3806题意:给定一棵有 nnn 个点的树, mmm 个询问,询问树上距离为 k 的点对是否存在思路:用 cnt 数组记录一下,当前 点 到根的距离。每原创 2020-10-05 18:31:21 · 336 阅读 · 0 评论 -
网络流Dinic算法 +模板
网络流模板Dinic算法模板题P3376 【模板】网络最大流(Dinic模板)Island Transport HDU - 4280ISAP模板SAP模板Dinic算法dinic算法流程先用bfs分层,搜出当前网络(容量网络或残量网络)中每个点的depth。判断条件是:如果当前点未被访问且当前的最大流量不为0,则标记它的深度并入队然后用dfs搜索增广路,当前流量为curflow,表示流到当前点u的最大流量。如果为0,或者已经走到汇点t,则返回。否则就搜索 比当前点u深度多1的点v,并且(u,v)这原创 2020-09-14 11:10:15 · 446 阅读 · 0 评论 -
无向图割点割边
无向图割点割边无向图割点割边练习题P3388 【模板】割点(割顶)397. 逃不掉的路无向图割点割边点双联通分量vcc:分量中没有割点,每条边属于1个点双边双联通分量ecc:分量中没有割边,每个点属于1个边双边双找到所有的割边后删去 -> 剩下的就是边双联通分量边双 + 割边 = 树参考链接练习题P3388 【模板】割点(割顶)题意:给出一个 n 个点 m 条边的无向图,求图的割点#include <bits/stdc++.h>#define ll long原创 2020-09-03 16:57:41 · 1211 阅读 · 0 评论 -
差分约束
差分约束差分约束系统练习题361. 观光奶牛P5960 【模板】差分约束算法差分约束系统概念:差分约束系统 是一种特殊的 n 元一次不等式组,它包含 n 个变量 x[1…n] 以及 m 个约束条件,每个约束条件是由 两个 其中的变量做差构成的,形如x[i]−x[j]<=wx[i] - x[j] <= wx[i]−x[j]<=w ,其中 w 是常数(正负都可)求其中一组解,只需要对每个联通块跑spfa判断负环,若不存在负环,则 dis 就是一组答案练习题361. 观光奶牛链接:原创 2020-08-29 21:57:47 · 359 阅读 · 0 评论 -
基环树
基环树概念: n 个点 n 条边组成的图,比树多出一个环,有且只有一个环外向树:每个点只有一条入边(in>=out 且 out=1)内向树:每个点只有一条出边(in<=out 且 in=1)练习题P4381 [IOI2008]Island链接:https://www.acwing.com/problem/content/description/360/题意:给定一个基环树森林,求所有基环树的直径之和思路: 对每个联通块分别操作。设 dis1[u]dis1[u]dis1[u] 为以原创 2020-08-29 16:37:08 · 225 阅读 · 0 评论 -
最小树形图
最小树形图朱刘算法练习P4716 【模板】最小树形图朱刘算法算法:1、对于每个点,选择它入度最小的那条边2、如果形成了最小环,那么就缩环成点,并且更新其他点到环的距离。如果没有环,结束练习P4716 【模板】最小树形图链接:https://www.luogu.com.cn/problem/P4716题意:求指定根节点的最小树形图#include <bits/stdc++.h>#define ll long longusing namespace std;const int原创 2020-08-27 01:08:58 · 165 阅读 · 0 评论 -
斯坦纳树
P6192 【模板】最小斯坦纳树链接:https://www.luogu.com.cn/problem/P6192题意:给定一个无向连通图,问连接 k 个关键点所需要的最小权值是多少?思路:斯坦纳树模板题,设 dp[i][s]dp [i][s]dp[i][s] 表示以 iii 为根且包含集合 sss 中所有点所需要的最小权值#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1原创 2020-08-21 15:22:26 · 240 阅读 · 0 评论 -
矩阵树
[HEOI2015]小Z的房间#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn=15,maxm=225,mod=1e9;int n,m;int mm[maxn][maxn],e[maxn][maxn];ll a[maxm][maxm];char s[20];int dx[]= {0,0,1,-1};int dy[]= {1,-1,0,0};ll gauss(ll原创 2020-08-18 21:56:23 · 172 阅读 · 0 评论 -
次小生成树
次小生成树kruskal + LCA练习题P4180 [BJWC2010]严格次小生成树The Unique MST POJ - 1679kruskal + LCA算法:先求出最小生成树,然后遍历所有未访问过的边(u、v、w),用 w 替换路径 (u ,v)中的最大值,对所有的答案取最小值。即可得到最小生成树。如果想要得到严格次小生成树,那么就处理出路径(u,v) 中的最大值和次大值。练习题P4180 [BJWC2010]严格次小生成树链接:https://www.luogu.com.cn/原创 2020-08-16 01:03:10 · 279 阅读 · 0 评论 -
最小生成树
最小生成树Prime算法Kruskal算法练习题P3366 【模板】最小生成树Prime算法算法流程:类似 Dijstra算法,维护一个点集,每次扩展与当前点集相连的权值最小的且不在集合中的点。实现:维护一个 dis 表示当前集合到达未访问过的点的最短距离,每次获取未访问过且距离最短的点,然后用这个点,重新更新 dis 数组。重复 n -1 次即可Kruskal算法实现:将所有边按边权从小到大排序,从小到大取 n - 1 条边,每次取边时,如果两点不在同一个联通块之间,那么就将它们合并,否则就跳过原创 2020-08-08 22:30:18 · 269 阅读 · 0 评论 -
最小费用最大流
最小费用最大流练习题P3381 【模板】最小费用最大流H. Minimum-cost Flow 2020牛客第一场 (最小费用最大流)练习题P3381 【模板】最小费用最大流链接:https://www.luogu.com.cn/problem/P3381#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn=1e5+10;namespace MCMF{ const in原创 2020-08-07 21:39:29 · 403 阅读 · 0 评论 -
图论知识点整理
图论1、拓扑排序2、最短路3、最近公共祖先LCA4、tarjan求强联通分量5、网络流6、二分图匹配、最大权匹配原创 2020-08-07 01:17:16 · 816 阅读 · 0 评论 -
一般图最大匹配
一般图最大匹配算法思路UOJ 79. 一般图最大匹配I. 1 or 2 牛客2020多校赛 (完美匹配)算法思路定义两类点:奇点和偶点首先从起点出发,并设为偶点。在队列中维护偶点,每次取出一个偶点进行增广遇到未访问过的点 v:记录路径 pre[v]=u,并设为奇点(1)如果 v 未匹配,那么就找到了增广路,通过pre数组,更新点的类型与当前的匹配情况(更新 match 数组)。然后直接返回(2)如果 v 已经匹配了,那么就将与 v 匹配的点 match[v] 放入队列进行增广遇到访问过的点原创 2020-07-16 16:55:57 · 450 阅读 · 0 评论 -
树链剖分习题 2(提高)
树链剖分Distance on the tree (树剖)Distance on the tree (树剖)题意:给定一棵树每条边都带有权值,给定 m 个询问查询 u 和 v 的路径上权值小于等于 w 的边的个数思路:先拆点将边权变为点权,可以离线来做。将点权小于当前询问权值的点,更新到线段树上,然后在查询路径上出现过的点的数量即可。(大于询问权值的点,还没更新上去)#include <bits/stdc++.h>#define ll long long#define ls (rt&原创 2020-07-01 10:53:27 · 169 阅读 · 0 评论 -
树链剖分习题 1(基础)
P3384 【模板】轻重链剖分链接:https://www.luogu.com.cn/problem/P3384#include <bits/stdc++.h>#define ll long long#define ls (rt<<1)#define rs (rt<<1|1)using namespace std;const int maxn=1e5+10;int n,m,r,mod;vector<int> e[maxn];int w[原创 2020-06-29 20:46:43 · 173 阅读 · 0 评论 -
树的直径习题
树的直径Building Fire Stations ZOJ-3820Building Fire Stations ZOJ-3820链接题意:给定一颗无根树让你选择两个点,让其他所有点到距离最近的选定点的最大距离最小,输出选定的两个点和这个最大的距离思路:方法一:如果只有一个点,那么答案就是树直径上的中点,现在要选取两个点,可以类比于把一个圆变成了两个圆。那么就按照中点,把这棵树分成两个连通块,然后分别取它们直径的中点,就是答案。方法二:二分。先二分出最小的最大距离,首先找到直径的一端 u1u原创 2020-06-28 18:33:58 · 669 阅读 · 0 评论 -
二分图匹配、最大权匹配
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063匈牙利算法#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn=500+10;int k,m,n;int match[maxn],visit[maxn];vector<int> G[maxn];bool dfs(int u){ for(auto v :.原创 2020-05-20 17:20:30 · 386 阅读 · 0 评论 -
tarjan求强联通分量
题意:求出度为0的强联通分量,从小到大输出点的 id思路:对每一个强联通分量染色。统计每个强联通分量的出度。把出度为 0 的强联通分量放入 ans 中#include <cstdio>#include <vector>#include <algorithm>#include <cstring>#define ll long longusing namespace std;const int maxn=50000+5,inf=0x3f3f3f3.原创 2020-05-20 15:48:28 · 464 阅读 · 0 评论 -
最近公共祖先LCA
LCA算法:fa[u][i]fa[u][i]fa[u][i]表示u节点往上走 2i2^i2i 步到达的节点,cost[u][i]cost[u][i]cost[u][i]表示走到目标节点的花费算法流程:首先预处理 fafafa 和 costcostcost 两个数组求lca时,首先走到同一深度,然后一起从大到小往上走,直到走不动为止#include <bits/stdc++.h>#define ll long longusing namespace std;const int .原创 2020-05-20 11:34:49 · 227 阅读 · 0 评论 -
拓扑排序
链接http://acm.hdu.edu.cn/showproblem.php?pid=4857拓扑排序算法总结:首先将入度为0的点加入集合中然后随便取出一个点,删去相连的边。此时如果出现入度为0的点,则继续加入集合中直到集合为空,判断ans中累积的点数是否等于n。不等于n说明存在一个环题意:让 1 的位置尽可能靠前,2的位置尽可能靠前,3的位置尽可能靠前思路:倒着求字典序最大,...原创 2020-05-07 23:34:30 · 300 阅读 · 0 评论