我做的图论题

备注:本文超链接只能通过右键-新建标签页打开链接

BFS

优先队列
图连通
状压

DFS

Slash Maze 经典的斜线迷宫
DFS判环
DFS序_Apple Tree 我的代码

单源最短路

Telephone Lines POJ3362
最优贸易 CODEVS1171
2200: [Usaco2011 Jan]道路和航线
P3831 [SHOI2012]回家的路 学一手分层图
P4568 [JLOI2011]飞行路线 分层图,但是这题有不需要k次就能到达…难受

Floyed

判正环
求最小环

欧拉回路

无向图的欧拉回路
有向图的欧拉回路
总结:欧拉回路分有向图和无向图两种,以及回到出发点和不回到出发点(前提是图已经联通)

无向图:
回到出发点 < = > <=> <=> 所有点的度为偶数
不回到出发点 < = > <=> <=> 只有两个不同点的度为奇数,其他点的度数全为偶数

有向图:
回到出发点 < = > <=> <=> 所有点的入度=出度
不回到出发点 < = > <=> <=> 只有一个点的 出度= 入度+1(起点), 另一个点的 入度 = 出度+1(终点)

记录路径:
先递归在记录。

差分约束

Burn the Linked Camp
King

若有一系列不等式,其中第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的点对个数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值