图论总结
文章平均质量分 64
须佐之男9000
学生党
展开
-
图论总结(6)最短路问题
最短路就是求图中两点的最短距离最短路的算法这里写三种一.Floyed-Warshall算法(O(N^3))这是求最短路最简单的算法(求出所有点的最短路,适用于负权边,但不适用与负权回路)int G[maxn][maxn],pre[maxn][maxn];int n;void print(int x,y){ if(pre[x][y]==0)return; print(x,pr原创 2017-08-24 15:29:47 · 214 阅读 · 0 评论 -
图论总结(7)并查集
并查集虽然是数据结构,但还是把它 放在图论里总结了吧,后面用最小生成树是要涉及到。个人理解并查集就是用来处理集合,"并"是合并两个集合,“差”是查找一个的元素在哪个集合里,“集”就是集合啦。并查集的关键就是用一个集合中代表元素来代表该集合。上模板:#include#includeusing namespace std;const int maxn=20001;int fat原创 2017-08-24 17:09:20 · 183 阅读 · 0 评论 -
图论总结(9)网络流问题
说实话网络流学得很浅,只能做点水题,没时间练题了。下面总结下几类题型。一.最大流问题概述问题就是一个有向图,每条边都有个容量,给你源点s和汇点t,问你从s到t的最大流量是多少。用增广路算法可以解决先求出每条边对应反向边的残量,构造出残量网络,若残量网络中有从s到t的路径,则s到t存在增广路(简单理解为可以是流量变大的路径),显然但残量网络中不存在增广路时有最大流量。Edmo原创 2017-08-24 20:28:42 · 537 阅读 · 0 评论 -
图论总结(10)二分图匹配
二分图匹配都能用网络流来解决,但代码太复杂。先是简单的最大匹配(无权):KM死磕了很久才看懂。直接匈牙利:模板://int S[maxn];int T[maxn];int Left[maxn];int m,n;//int Right[maxn];bool match(int i){ for(int j=1;j<=n;j++)if(!T[j]&&G[i][j]){原创 2017-08-25 16:47:42 · 285 阅读 · 0 评论 -
图论总结(1)深度优先遍历
感觉图论嗑得差不多了做点总结吧。听所图论题套模板,下面就给一些模板吧。1.DFS框架(依次递归访问当前节点的所有相邻节点):vector<int>G[maxn];int vis[maxn];void dfs(int u){ vis[u]=1; PREVISIT(u);//访问u前的操作 int d=G[u].size(); for(int i=0;i&l...原创 2017-08-23 19:53:03 · 1217 阅读 · 0 评论 -
图论总结(2)无向图的割顶和桥
概念:对于无向图G,如果删除某个节点u后,连通分量的数目增加,则称u为图的关节点或割顶。定理:在无向连通图G的dfs树中,非根节点u是G的割顶当且仅当u存在一个子节点v,使得v及其所有后代都没有反向边连回u的祖先(u不算)。证明略;方便起见,设low【u】为u及其后代所能连回的最早的祖先的pre(编号值)值,则定理中的条件就能够简写为low(v)>=pre(u);如果后...原创 2017-08-23 20:57:10 · 760 阅读 · 0 评论 -
图论总结(3)无向图的双连通分量
概念:1.如果任意两点存在至少两条“点不重复”的路径,则说这个图是点-双联通的(一般简称双联通BCC)。这个要求等价于任意两边都在同一个简单环中,即内部无割顶。 2.类似的,如果任意两点至少存在两条“边不重复”的路径,我们说这个图是边——双连通的。这个要求低一点,只需要每条边至少在一个简单环中,即所有边都不是桥。对于一张无向图,点双连通的极大子图称为双连通分量。可原创 2017-08-24 10:15:06 · 384 阅读 · 0 评论 -
图论总结(4)有向图的强连通分量
有向图的强连通分量:有向图G中,如果有两个顶点间至少存在一条路径,称两个顶点强连通(stringly connected),简称SCC。如果有向图G的每个顶点都强连通,则称G是一个强连通图。非强连通图的极大强连通子图,称为强连通分量。蓝书上给了两种算法:一.Kosaraju算法:按照SCC图拓扑排序的逆序进行遍历。先正序遍历的到拓扑排序,再构造G的反向图G2(所有边相反),原创 2017-08-24 11:09:56 · 786 阅读 · 0 评论 -
图论总结(5)2—SAT问题
SAT问题是最早的NPC问题。2—SAT问题是这样的:有n个布尔变量,另有m个需要满足的条件,每个条件的形式都是(xi为真/假或者xj为真/假),2—SAT问题的目标是给每个变量赋值,使得所有的条件得到满足。一种解法:构造一张有向图G,其中每个变量xi拆成两个节点2i和2i+1,分别表示xi为假和xi为真。最后要为每个变量选其中一个节点标记。比如,若标记了2i,表示xi为假,标记了2i+1原创 2017-08-24 15:00:36 · 448 阅读 · 0 评论