图论
2016cxg
这个作者很懒,什么都没留下…
展开
-
有向边的拓扑排序 UVA - 10305
//拓扑排序模板#include<iostream>#include<cstring>using namespace std;const int maxn=105;int bol[maxn];int topo[maxn],cnt;int G[maxn][maxn];//保存有向边 int m,n;bool dfs(int u){//排序u开头的拓扑排序 bol[u]=-1原创 2017-02-21 21:23:30 · 196 阅读 · 0 评论 -
二分图的多重匹配
来自:http://www.cppblog.com/JulyRina/archive/2015/02/13/209816.html参控:http://www.cnblogs.com/nanke/archive/2012/04/15/2450288.html//HDU3605#include <cstdio>#include <cstring>#include <vector>using转载 2017-08-02 20:00:15 · 357 阅读 · 0 评论 -
生成树计数
生成树计数,取摸#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>#include <vector>#include <queue>#include <map>#include <set>#include <list>#include <string>#include <mat转载 2017-08-03 09:04:32 · 223 阅读 · 0 评论 -
图论模型总结
最短路:单源最短路(Dijkstra | BellmanFord | SPFA) 多源最短路(Floyd)生成树:最小生成树(Prim | Kruskal) 次小生成树(Prim | Kruskal) 最小树形图(有向图的最小生成树 朱刘算法) 生成树计数(Matrix—tree定理 取摸和不取摸) 曼哈顿最小生成树(曼哈顿距离下的最小生原创 2017-08-05 17:55:35 · 1310 阅读 · 0 评论 -
最大流
参考 http://www.cnblogs.com/north_dragon/archive/2010/05/29/1747202.html http://blog.csdn.net/keroro520/article/details/9669389 http://blog.csdn.net/u014141559/article/details/43709421 http://原创 2017-08-03 22:55:57 · 201 阅读 · 0 评论 -
最小费用流
参考 http://blog.csdn.net/fp_hzq/article/details/6675872 http://blog.csdn.net/u010660276/article/details/12750009 http://www.cnblogs.com/kuangbin/archive/2012/08/22/2651222.html原创 2017-08-03 23:05:37 · 218 阅读 · 0 评论 -
2-SAT
//参考 https://wenku.baidu.com/view/afd6c436a32d7375a41780f2.html //2 - SAT 问题 : 给定N个组,每个组有两个点,某些点不相容,从每个组选一个点问怎么选出相容的N个点 //得到字典序最小的解:染色法//HDU 1814//复杂度O(VE)#include<iostream> #include<cstdio>#inclu转载 2017-08-04 14:27:18 · 438 阅读 · 0 评论 -
manhattan最小生成树
//manhattan距离下的最小生成树,主要在于产生有效边,然后对产生的有效边集求最小生成树//POJ3241//将N个点奉承K个部分,定义两个点的相似度是他们的曼哈顿距离,找出一个数X使得每个点数大于1的部分任意两个点的相似度都不大于X//转化成manhattan最小生成树求n-k小边问题,可以想成对于最小生成树里面把大于X的边都切掉形成一部分,这一部分可能只有一个点,也可能得到多个点但是转载 2017-08-04 16:23:58 · 247 阅读 · 0 评论 -
一般图最大匹配
//带花树算法求一般图的最大匹配参考 http://www.cnblogs.com/owenyu/p/6858508.html http://blog.csdn.net/jackyguo1992/article/details/11271497 http://fanhq666.blog.163.com/blog/static/8194342620120304463580/转载 2017-08-04 16:50:26 · 257 阅读 · 0 评论 -
带权二分图的最大完美匹配
来自:http://blog.csdn.net/yulin11/article/details/4385207参考:http://blog.csdn.net/x_y_q_/article/details/51927054 http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.html http://blog.csd转载 2017-08-02 19:12:14 · 786 阅读 · 0 评论 -
无权二分图的最大匹配
//poj2063#include<iostream>#include<cstdio>#include<cstring>using namespace std ;/*交替路:从一个未匹配节点出发,依次经过未匹配边,匹配边,未匹配边,匹配边,形成的路径是交替路增广路:从一个未匹配节点处罚,走交替路,如果途径另一个未匹配节点,则这条路就是增广路*/ //匈牙利算法求无权二分图的最大匹配原创 2017-08-02 16:55:24 · 306 阅读 · 0 评论 -
最小树形图
//来自kuangbin的最小树形图模版:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 1000+10;const int MAXM = 40000+10;struct Edge{ //分别为起点转载 2017-08-02 12:21:15 · 335 阅读 · 0 评论 -
有向图的欧拉道路 UVA - 10129
//有向图的欧拉道路#include<iostream>#include<cstdio>#include<cstring> using namespace std;const int maxn=30;int vis[maxn],f[maxn],in[maxn],out[maxn];//vis为有向图的节点,f为并查集,in入度,out节点出度void init(){ memset原创 2017-02-21 23:13:06 · 300 阅读 · 0 评论 -
最短路
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<queue>#include<deque>using namespace std;#define INF 0原创 2017-07-30 15:14:13 · 320 阅读 · 0 评论 -
最小生成树
//HDU 1836//最小生成树 prime#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<set>using namespace std ;const int maxn = 1e2 + 10 ;const int INF = 0x3f3原创 2017-07-30 20:48:30 · 222 阅读 · 0 评论 -
次小生成树
// POJ - 1679#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;//最小生成树prim 复杂度 O(v^2)//次小生成树prim 复杂度 O(v^2 * 2)/* * 次小生成树 * 求最小生成树时,用数组Max[i][j]来表原创 2017-07-31 11:25:15 · 255 阅读 · 0 评论 -
割点和桥
图的割点、桥、双连通分支知识割点集合: 在一个无向连通图中,如果有一个顶点集合,当删除这个集合中的顶点和这些顶点关联的边之后,得到的图是多个连通块,则这个顶点集合就是割点集合割边集合: 如上定义 图的点连通度:最小割点集合中顶点个数图的边连通度:最小割边集合中边的个数点(边)双连通图: 是一个点(边)连通度大于1无向图 割点:对于一个点连通度为1的无向图,他的割点集合的唯一顶点就是割点桥原创 2017-07-31 22:36:55 · 381 阅读 · 0 评论 -
有向图的强连通分量
//HDU 1269//因为HDU挂了所以下面求有向图的强连通分量的代码还没有提交,等好了再测试吧#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;#define MAXN 10010#define MAXM 100010//求图上的强连通分量 Tarja原创 2017-07-31 15:44:47 · 479 阅读 · 0 评论 -
边双连通分支
/*求边双连通分支:跑一遍求割点与桥的Tarjan得到该图的割点和桥,去掉桥,其余连通分支就是边连通分支了,边连通分支数是桥数+1。 边连通分支就是去掉最少两条边才能将该图划分为两个部分的图,桥就是一个图被去掉一条边就能变成两个子图的那一条边, 构造边双连通分支: 把双连通子图收缩为一个点,形成一个树,需要加边数量是(leaf+1)原创 2017-08-01 10:39:38 · 324 阅读 · 0 评论 -
点双连通分量
/*补图:对于一个无向图G,他的完全图为K,那么K-G的所有边组成的图就是G的补图双连通分量:无向图G的一个极大双连通子图,这个子图要分成多个子图的话必须舍弃2极其以上的点或者边二分图:把无向图的顶点划分成两个部分,无向图的边两端的顶点分别属于这两个部分,也就是说在顶点集合内部不会有边连接交叉染色法:判定一个图是否二分图的方法奇圈:无向图中一条长度为奇数的回路,他的点和边不重合*/ /原创 2017-08-02 09:42:28 · 390 阅读 · 0 评论 -
最近公共祖先LCA
//最近公共祖先 LCA//DFS + ST 在线算法//算法思想:对一棵树进行深搜回溯标号,那么两个节点的最近公共祖先就是两个节点第一次标号之间深度最小(非标号,因为回溯会增大那个节点,虽然该节点第一次标号很小)的那个对应的节点 //poj1330#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#i原创 2017-08-05 17:36:42 · 227 阅读 · 0 评论