图论其余算法
WinJourn
Stay hungry stay foolish
展开
-
hdu1878 欧拉回路(无向图存在欧拉回路,入门题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878【概念】欧拉回路:若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。若该路径是一个圈,则称为欧拉(Euler)回路。该题目是无向图:无向图存在欧拉回路的充要条件一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图。原创 2015-06-30 11:10:01 · 2684 阅读 · 1 评论 -
网络流初步
POJ1273参考:http://www.cnblogs.com/jackge/archive/2013/04/10/3012182.html裸的最大流题目,要注意重边。int map[][] ,记录容量int flow[][]记录流量int res[]记录残余流量int pre[]记录父亲节点,更新flow数组是用到从流量为0开始找增广路,清空flow数组开始。原创 2016-04-28 10:25:45 · 477 阅读 · 0 评论 -
最小费用最大流
POJ2195 建图,直接套用模板求出每个人到每个房子最短的距离来构造费用(cost),因为一个房子只能容纳一个人,所以容量(cap)都为1,然后建立超级源点与所有的人相连,所有的房子与超级汇点相连就行了。显然,超级源点超级汇点的费用都是0;#include #include #include #include #include #include #includ原创 2016-05-20 22:21:17 · 525 阅读 · 0 评论 -
无向图的边双联通分量,点双联通分量
边双联通分量POJ3352参考博客http://blog.csdn.net/lyy289065406/article/details/6762370直接套用了求割边的模板,所有low值相同的节点都在一个双联通分量里,将双联通分量缩点,问题再次被转化为至少在缩点树上增加多少条树边,使得这棵树变为一个双连通图”。首先知道一条等式:若要使得任意一棵树,在增加若干条边后,变原创 2016-05-20 10:08:57 · 1508 阅读 · 0 评论 -
有向图的强连通分量(tarjan算法)
考虑强连通分量C,设其中第一个被发现的点为x,则,C中其他的点都是x的后代。我们希望在x访问完成时立即输出C(可以同时记录C,输出代表当前在当前的遍历序列中剔除),这样就可以在同一颗DFS树种区分开所有SCC了,因此问题的关键是判断一个点是否为一个SCC中最先被发现的点。原创 2016-05-08 20:10:23 · 3744 阅读 · 0 评论 -
NYOJ99单词拼接(欧拉通路回路,dfs打印路径)
单词拼接时间限制:3000 ms | 内存限制:65535 KB难度:5描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。前一个单词的结尾应该与下一个单词的道字母相同。如alohadogarachnidgophertigerrat 可以拼接成:aloha.arachnid.dog.gopher.rat.tiger输入第一行原创 2016-05-02 19:27:45 · 1222 阅读 · 0 评论 -
求无向图的割点和桥
由具体实例引出无向图割点的求法,以及存在重边情况下求割边的改进方法------------------------------------------------------------因而对于求桥,我们不能再用求割点的方法dfs(int u,int fa),我们需要走重边,但是不要走同一条边的反向箭头。原创 2016-05-12 21:45:35 · 3135 阅读 · 0 评论 -
POJ3667(传递闭包)
Cow Contest时间限制:1000 ms | 内存限制:65535 KB难度:4描述 N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we all know, some cows code better than other原创 2016-04-27 19:15:12 · 447 阅读 · 0 评论 -
HDU 5285 wyh2000 and pupil(二分图,染色法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5285“if two pupils are in the same group,then they know each other ” at my first glance , I mistaken this sentence 's meaning,It's just a simple Bi原创 2016-03-05 13:41:13 · 669 阅读 · 0 评论 -
拓扑排序
拓扑排序按照图论上的术语来说,就是将原来的偏序集扩张成全序集的方法叫做拓扑排序。简而言之就是,给你N对比较关系 A 排序后即为 E 算法描述step1 :遍历图中每一个顶点,直到找到入度为 0 的顶点,删除该顶点及其相连的边。step 2:重复step1 , 最后删除的顶点所组成的序列即为拓扑排序后的序列。如图所示的有向图 拓扑排序的过程原创 2015-11-04 22:45:54 · 1411 阅读 · 0 评论 -
hdu4707 Pet(bfs & dfs,vector)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707【题意】:linji的仓鼠丢了,他要找回仓鼠,他在房间0放了一块奶酪,然后给出房间的相邻关系,相邻的房间距离为1,题目给出奶酪能吸引仓鼠的最大距离 D,然后求出有多少房间可能是仓鼠所在的位置,也就是求有多少个房间距离 房间0 的距离 大于D。【分析】网上有很多dfs的代码,原创 2015-06-18 19:44:10 · 674 阅读 · 0 评论 -
南阳理工1015 (染色法判断二分图)
【二分图简介】二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个不相交集 X 和 Y ,使得每一条边都分别连接X 、 Y 中的顶点。如果存在这样的划分,则此图为一个二分图。二分图的一个等价定义是:不含有「奇数条边的环」的图。图 1 是一个二分图。为了清晰,我们以后都把它画成图 2 的形式。原创 2015-08-14 16:47:41 · 2537 阅读 · 0 评论 -
求无权图的最大匹配---匈牙利算法
匈牙利算法匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名,,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。【先介绍几个概念】匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。例如,图3、图4中红色的边就是图 2 的匹配。我们定义匹配点、匹配边、未匹配点、非匹配边,它们的含义非常显然。例如图 3中1、4、5、7为匹配点,其他顶点为未匹配点;1-5、4-7为匹配边,其他边为非匹原创 2015-08-14 16:40:23 · 1598 阅读 · 0 评论 -
NYOJ 月老的难题 (最大二分图匹配,匈牙利算法)
题目链接;http://acm.nyist.net/JudgeOnline/problem.php?pid=239月老的难题时间限制:1000 ms | 内存限制:65535 KB难度:4描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘。现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭。现在已知哪些男孩与哪些原创 2015-08-14 16:51:40 · 1021 阅读 · 0 评论 -
求无向图的割点 (poj 1144 Network)
割点 :去掉该点后原来的图不连通(出现好几个连通分量),该点被称为割点。注意删除某点意味着和该点关联的边也全部删除求割点的伪代码DFS(v1,father): dfn[v1] = low[v1] = ++dfsClock vis[v1] = true child = 0 for each egde(v1,v2) in E: if(vis[v2] ==原创 2015-08-13 19:03:42 · 969 阅读 · 0 评论 -
二分图最大匹配,最小点覆盖,最小路径覆盖,二分图最大独立集
1) )数 一个二分图中的最大匹配数等于这个图中的最小点覆盖数König 定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边UVA11419最小点覆盖,打印匹配位置。#include#include原创 2016-11-10 11:46:32 · 1431 阅读 · 0 评论