图论基本算法
图论基本算法
_Shmily
这个作者很懒,什么都没留下…
展开
-
P6113 【模板】一般图最大匹配
模板题,也没有卡各种东西:题目描述给出一张 n 个点 m 条边的无向图,求该图的最大匹配。输入格式第一行两个正整数 n 和 m,分别表示图的点数和边数。接下来 m 行,每行两个正整数 u 和 v,表示图中存在一条连接 u 和 v 的无向边。输出格式第一行一个整数,表示最大匹配数。第二行 n 个整数,第 i 个数表示与结点 i 匹配的结点编号,若该结点无匹配则输出 0。如有多解输出...原创 2020-08-24 21:36:46 · 148 阅读 · 0 评论 -
0/1分数规划——最优比率环POJ3621
POJ3621#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<cmath>#include<map>#define ll long longusing nam...原创 2020-08-24 20:44:43 · 141 阅读 · 0 评论 -
0/1分数规划——最优比率生成树POJ2728
POJ2728#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>#include<cmath>#include<map>#define ll long longusing nam...原创 2020-08-24 20:44:30 · 104 阅读 · 0 评论 -
0/1分数规划——二分、Dinkelbach
POJ2976一、二分#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#define ll long longusing namespace std;const...原创 2020-08-24 20:43:19 · 253 阅读 · 0 评论 -
P6699 【模板】一般图最大权匹配
题目链接题面:这个是真不会。。。。。。代码:#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<vector&g原创 2020-08-25 09:28:27 · 2740 阅读 · 0 评论 -
P3388 【模板】割点(割顶)
题目连接题面:代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<queue>#include<cmath>#include<map>#define ll long longusing namespace std;const int maxn原创 2020-08-24 22:26:49 · 82 阅读 · 0 评论 -
P3387 【模板】缩点
题目链接题面:代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<vector>#define ll long longusing namespace std;const int maxn=100100;int head[maxn],ver[maxn],nt[maxn]原创 2020-08-24 22:26:40 · 79 阅读 · 0 评论 -
P3385 【模板】负环
题目链接题面:代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<queue>#include<vector>#define ll long longusing namespace std;const int maxn=6100;int head[maxn原创 2020-08-24 22:26:32 · 89 阅读 · 0 评论 -
P4782 【模板】2-SAT 问题
题目连接题面:代码:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<queue>#define ll long long#define llu unsigned llusing namespace std;const int m原创 2020-08-24 22:23:24 · 72 阅读 · 0 评论 -
P6577 【模板】二分图最大权完美匹配
P6577 【模板】二分图最大权完美匹配①、进阶指南上说他的KM算法的时间复杂度是O(N3)的,其实分析一下,就可以发现,它的时间复杂度其实是O(N4)的,这题过不去。只能过去四个点。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<set>原创 2020-08-24 21:59:57 · 406 阅读 · 0 评论 -
P5632 【模板】Stoer-Wagner算法
定义无向图 G 的最小割为:一个去掉后可以使 G 变成两个连通分量,且边权和最小的边集的边权和。给出一张无向图 G,求其最小割。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<v...原创 2020-08-24 21:51:24 · 118 阅读 · 0 评论 -
P1989 【模板】无向图三元环计数
题目背景无向图 G 的三元环指的是一个 G 的一个子图 G0 ,满足 G0 有且仅有三个点 u,v,w,有且仅有三条边(u,v),(v,w),(w,u)。两个三元环 G1 ,G2 不同当且仅当存在一个点 u,满足 u∈G1 且u不属于G2。题目描述给定一个 n 个点 m 条边的简单无向图,求其三元环个数。输入格式每个测试点有且仅有一组测试数据。输入的第一行是用一个空格隔开的两...原创 2020-08-24 21:33:17 · 328 阅读 · 0 评论 -
P5905 【模板】Johnson 全源最短路
时间复杂度为O(n m logm)#include<iostream>#include<cstdio>#include<cstring>#include<queue>#define ll long long#define pb push_back#define pr make_pairusing namespace std;cons...原创 2020-08-24 21:31:09 · 132 阅读 · 0 评论 -
P5960 【模板】差分约束算法
我记得以前写过差分约数的博客,可是找不到了,就再写一遍吧。a - b <= k -----> a <= b + k ------>要求最终结果满足这个式子,加源点跑最短路,若能跑出来,则最终一定满足。#include<iostream>#include<cstdio>#include<algorithm>#include...原创 2020-08-24 21:29:38 · 88 阅读 · 0 评论 -
最大密度子图:
一、无边权点权:Hard Life POJ - 3155 :John is a Chief Executive Officer at a privately owned medium size company. The owner of the company has decided to make his son Scott a manager in the company. John f...原创 2020-08-24 21:16:15 · 111 阅读 · 0 评论 -
一般图最大权匹配
反正就是也不懂:Universal Online Judge:#81. 一般图最大权匹配:从前一个和谐的班级,所有人都是搞OI的。有 n 个是男生,有 0 个是女生。男生编号分别为 1,…,n。现在老师想把他们分成若干个两人小组写动态仙人掌,一个人负责搬砖另一个人负责吐槽。每个人至多属于一个小组。有若干个这样的条件:第 v 个男生和第 u 个男生愿意组成小组,并能写出 w 万万行的代码。...原创 2020-08-24 21:05:12 · 904 阅读 · 0 评论 -
一般图最大匹配
一、例题:Universal Online Judge #79. 一般图最大匹配从前一个和谐的班级,所有人都是搞OI的。有 n 个是男生,有 0 个是女生。男生编号分别为 1,…,n。现在老师想把他们分成若干个两人小组写动态仙人掌,一个人负责搬砖另一个人负责吐槽。每个人至多属于一个小组。有若干个这样的条件:第 v 个男生和第 u 个男生愿意组成小组。请问这个班级里最多产生多少个小组?输...原创 2020-08-24 21:05:03 · 371 阅读 · 0 评论 -
图、树的建立
一、邻接矩阵:内存占用较高,仅适用于0<=n,m<=1000的图,在简单的图算法题目中较为常见。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=0x7fffffff;...原创 2020-08-24 17:15:43 · 276 阅读 · 1 评论 -
最短路——Dijkstra、Bellman-Ford、SPFA、Floyd
一、Dijkstra算法二、Bellman-Ford算法三、SPFA算法四、Floyd算法原创 2020-08-24 17:26:44 · 286 阅读 · 0 评论 -
树的深度、重心、连通块划分、拓扑排序、直径
一、树的深度: 树中各个节点的深度是一种自顶向下的统计信息。起初,我们已知根节点的深度为0。若节点x的深度为d(x),则它的子节点y的深度就是d(y)=d(x)+1。在深度优先遍历的过程中结合自顶向下的递推,就可以求出每个节点的深度d。void dfs(int x){ v[x]=1; for(int i=head[x];i;i=nt[x]) { in...原创 2020-08-24 18:09:25 · 941 阅读 · 0 评论 -
图的类型与性质——欧拉图、(竞赛图、哈密顿图)
一、欧拉图: 无向图连通性的小问题——欧拉路问题,俗称一笔画问题。 给定一张无向图,若存在一条从节点S到节点T的路径,恰好不重不漏的经过每条边一次(可以重复经过图中的顶点),则称该路径为S到T的欧拉路。 特别的,若存在一条从节点S出发的路径,敲好不重不漏的经过每条边一次(可以重复经过图中的节点),最终回到起点S,则称该路径为欧拉回路。存在欧拉回路的无向图被称为欧拉图。 欧拉图的判定...原创 2020-08-24 18:10:36 · 3625 阅读 · 1 评论 -
图的搜索进阶A*,IDA*
一、A * : 估价函数的设计准则:估值f(state)≤未来实际代价g(state)。 A * 算法的实现,A * =优先队列BFS+估价函数。 1。优先队列BFS算法维护了一个优先队列,不断从堆中取出当前代价最小的状态进行扩展。每个状态第一次从堆中取出时,就得到了从初态到该状态的最小代价。 如果给定一个目标状态,需要求出从初态到目标状态的最小代价,那么优先队列BFS这个优先策略...原创 2020-08-24 18:12:25 · 264 阅读 · 0 评论 -
Tarjan算法与无向图连通性
一、无向图的割点与桥的基本概念: 给定无向连通图G = (V, E)割点:对于x∈V,从图中删去节点x以及所有与x关联的边之后,G分裂为两个或两个以上不相连的子图,则称x为割点割边(桥):若对于e∈E,从图中删去边e之后,G分裂成两个不相连的子图,则称e为G的桥或割边一般无向图(不一定连通)的割点与桥就是它的各个连通块的各点和桥Tarjan算法基于无向图的深度优先遍历...原创 2020-08-24 18:14:54 · 1305 阅读 · 1 评论 -
Tarjan算法与有向图连通性
一、基本概念:流图: 给定一个有向图G= (V,E),若存在r∈V满足,满足从r出发能够到达V中所有的点,则称G是一个流图,记为(G,r),其中r是流图的源点。流图的搜索树: 在一个流图(G,r)上从r出发,进行深度优先遍历(DFS),每个点只访问一次。所有发生递归的变(x,y)(换言之,从x到y是对y的第一次访问)构成的一棵以r为根的树我们把它称为流图(G,r)的搜索树。时间戳:...原创 2020-08-24 18:15:01 · 705 阅读 · 0 评论 -
二分图的匹配
一、二分图的判定: 如果一张图的N个节点可以分成A,B两个非空集合,其中A∩B=空集,并且在同一集合内的点之间都没有边相连,那么称这张无向图为一张二分图。A,B分别称为二分图的左部和右部。 定理: 一张无向图是二分图,当且仅当图中不存在奇环(长度为奇数的环)。 根据该定理,我们可以用染色法进行二分图的判定。大致思想为:尝试用黑白两种...原创 2020-08-24 18:15:47 · 1552 阅读 · 0 评论 -
二分图的覆盖与独立集
一、二分图最小点覆盖: 给定一张二分图,求出一个最小的点集S,使得图中任意一条边都有至少一个端点属于S。这个问题被称为二分图的最小点覆盖,简称最小覆盖。Konig定理: 二分图最小点覆盖包含的点数等于二分图最大匹配包含的边数。 证明: 首先,因为最大匹配是原二分图边集的一个子集,并且所有的边都不相交,所以至少需要从...原创 2020-08-24 18:17:02 · 653 阅读 · 0 评论 -
最短路径树:
一、最短路必经边:先求出任意一条最短路,记录这条最短路上所有的边,枚举这些边:题目描述Farmer John 热衷于散步,每天早上他都要从 1 号仓库走到 n 号仓库。 Farmer John 家的 n 个仓库被 m 条双向道路连通起来,每条道路有一个长度 w。而Farmer John 又不喜欢走路,所以他走的是从 1 号仓库到 n 号仓库的最短路。但是 Farmer 的奶牛们总想搞点事情,...原创 2020-08-24 20:46:57 · 535 阅读 · 0 评论 -
严格次短路:
参考Roadblocks POJ - 3255:洛谷P2865 [USACO06NOV]路障Roadblocks:一、直接Dijkstra:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#includ...原创 2020-08-24 20:47:07 · 352 阅读 · 1 评论 -
2-sat:
一、染色法,暴力染色,求解字典序最小解:HDU1814有n对人,每对有两个,有m对相互讨厌的关系,相互讨厌的两个人不能同时出现,每对人中出现且只能出现一个,判断能否成立,若成立,输出字典序最小的解。2-sat水题:#include<iostream>#include<cstdio>#include<algorithm>#include<cst...原创 2020-08-24 20:47:33 · 124 阅读 · 0 评论 -
最大团问题:
无向图的最大团等于其补图的最大独立集无向图的最大独立集等于其补图的最大团。一、Maximum Clique HDU - 1530 :Given a graph G(V, E), a clique is a sub-graph g(v, e), so that for all vertex pairs v1, v2 in v, there exists an edge (v1, v2) in ...原创 2020-08-24 20:48:29 · 974 阅读 · 0 评论 -
最小环
一、Sightseeing trip POJ - 1734:There is a travel agency in Adelton town on Zanzibar island. It has decided to offer its clients, besides many other attractions, sightseeing the town. To earn as much a...原创 2020-08-24 21:04:43 · 95 阅读 · 0 评论 -
图的遍历(DFS、DFS序,BFS)
一、DFS:const int maxn=100008;int head[maxn],nt[maxn],ver[maxn],edge[maxn];bool ha[maxn];void DFS(int x){ ha[x]=true; for(int i=head[x];i;i=nt[i]) { int y=ver[i]; if(ha[...原创 2020-08-24 17:22:18 · 421 阅读 · 0 评论