备注:本文超链接只能通过右键-新建标签页打开链接
BFS
DFS
Slash Maze 经典的斜线迷宫
DFS判环
DFS序_Apple Tree 我的代码
单源最短路
Telephone Lines POJ3362
最优贸易 CODEVS1171
2200: [Usaco2011 Jan]道路和航线
P3831 [SHOI2012]回家的路 学一手分层图
P4568 [JLOI2011]飞行路线 分层图,但是这题有不需要k次就能到达…难受
Floyed
欧拉回路
无向图的欧拉回路
有向图的欧拉回路
总结:欧拉回路分有向图和无向图两种,以及回到出发点和不回到出发点(前提是图已经联通)
无向图:
回到出发点 < = > <=> <=> 所有点的度为偶数
不回到出发点 < = > <=> <=> 只有两个不同点的度为奇数,其他点的度数全为偶数
有向图:
回到出发点 < = > <=> <=> 所有点的入度=出度
不回到出发点 < = > <=> <=> 只有一个点的 出度= 入度+1(起点), 另一个点的 入度 = 出度+1(终点)
记录路径:
先递归在记录。
差分约束
若有一系列不等式,其中第i个不等式是 x [ v ] − x [ u ] < = a [ i ] x[v]-x[u]<=a[i] x[v]−x[u]<=a[i] ,求 x [ n ] − x [ 0 ] x[n]-x[0] x[n]−x[0] 的最大值
上述不等式很容易化为 x [ v ] < = x [ u ] + w [ u ] [ v ] x[v]<=x[u]+w[u][v] x[v]<=x[u]+w[u][v] 的形式,和SPFA中松弛操作判定条件 ( d [ v ] > d [ u ] + w ( u , v ) ) (d[v]>d[u]+w(u,v) ) (d[v]>d[u]+w(u,v))很像,仔细分析:
上述不等式必须满足,反向考虑,若 x [ v ] > x [ u ] + w [ u ] [ v ] x[v]>x[u]+w[u][v] x[v]>x[u]+w[u][v] ,则为SPFA求最短路的松弛操作,则
原题求 x [ n ] − x [ 0 ] x[n]-x[0] x[n]−x[0] 的最大值<=> 求0到n的最短路,且有向路径为 u->v
若有一系列不等式,其中第i个不等式是 x [ v ] − x [ u ] > = a [ i ] x[v]-x[u]>=a[i] x[v]−x[u]>=a[i] ,求 x [ n ] − x [ 0 ] x[n]-x[0] x[n]−x[0] 的最小值
同样化作 x [ v ] > = x [ u ] + w [ u ] [ v ] x[v]>=x[u]+w[u][v] x[v]>=x[u]+w[u][v]
分析:
若 x [ v ] < x [ u ] + w [ u ] [ v ] x[v]<x[u]+w[u][v] x[v]<x[u]+w[u][v] ,则 x [ v ] = x [ u ] + w [ u ] [ v ] x[v]=x[u]+w[u][v] x[v]=x[u]+w[u][v] ,则为SPFA求最远路的松弛操作.
原题求 x [ n ] − x [ 0 ] x[n]-x[0] x[n]−x[0] 的最小值<=> 求0到n的最远路,且有向路径为 u->v
注意:
确保图能联通
网络流
P2756飞行员配对方案问题
P4016 负载平衡问题
P2764 最小路径覆盖问题
P2765 魔术球问题
P3254 圆桌问题
我的板子:费用流SPFA 费用流Dijkstra 最大流EK
二分图定理:最小路径覆盖数=顶点数-最大匹配 < = > <=> <=>最小路径覆盖=点的总数-网络最大流
最大独立集 = 点数 - 最大匹配
输出路径:并查集
注:用费用流板子跑最大流时间复杂度高一点
点分治(管他,也加入图论吧)
P3806 【模板】点分治1 我的代码 网上题解貌似求树的重心普遍有问题?
模板题(求距离为k的点对个数) 我的代码
求小于k的点对个数 我的代码
权值和为k,求最小边数 我的代码
求一个树的任意子树异或的答案的方案数+DFS序
总结:
点分治运用于求 一棵树任意两点(u,v)的满足条件的距离或者。。。,我们对其采用分治的策略,每次取树根,然后统计删除根之后一棵子树的答案,再合并,。。。,然后继续分治。
模板:求一棵树上距离为k的点对个数