图论
文章平均质量分 80
islands_
IT 弱菜
展开
-
Hdu 1350 (Taxi Cab Scheme) 有向图最小路径覆盖。
有向图的最小路径覆盖 = n -最大匹配。 这里的最大匹配是指吧原图一个点拆成2个点以后建图的最大匹配。VIEW CODE#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace s原创 2015-01-25 21:37:22 · 449 阅读 · 0 评论 -
POJ 1486 (2分匹配 必须变判断)
建图很好想到,主要是后面判断这条匹配边是不是必须变。 只需要吧当前这个匹配拆开,并且在图中吧这条边去掉。对对于左边的点去找增光路,如果不能找到,说明就是匹配必须边。#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-07-20 10:06:06 · 633 阅读 · 0 评论 -
scu oj 4443 Range Query (scoure :2015年四川省acm省赛)
Range Queryfrog has a permutation p(1),p(2),…,p(n) of {1,2,…,n}. She also has m1+m2 records (ai,bi,ci) of the permutation.For 1≤i≤m1, (ai,bi,ci) means min{p(ai),p(ai+1),…,p(bi)}=ci;For m1i原创 2015-08-25 11:43:56 · 1696 阅读 · 0 评论 -
hdu 4185 (Oil Skimming) 奇偶匹配
通过题意我们可以看出,一块地如果是油田,那么如果他要组成一块地,必须和周围的4块中的一块组成。那么可以得到,坐标和(i+j)是奇数的油田必须和坐标和为偶数的匹配才能组成一块地。那么我们可以把偶数油田看成是左边的点,奇数油田看成右边的点, 如果左边的点能和右边的点组成一块地 , 就建一条边 。 这样可以得到一个2分图。对2图求最大匹配,就是答案。 求2分匹配有2中方法 ,匈牙利算法和网络流算法。原创 2015-01-23 21:44:31 · 573 阅读 · 0 评论 -
poj 1330 LCA 最近公共祖先
水题目。直接上代码了。VIEW CODE#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int mmax= 10010;const int mod=1原创 2015-02-03 15:07:00 · 596 阅读 · 0 评论 -
hdu 2586 树上点对最近距离 (lca)
,只要知道dis[i][j]=dis[i][root]+dis[j][root]-2*dis[Lca(i,j)][root]. 其中root为树的根节点,LCA(i,j)为i,j的最近公共祖先。 所以我们先把所有的询问储存下来,然后离线直接查询。复杂度是o(n+q)的。VIE#include#include#include#include#include#include#inc原创 2015-02-03 15:59:59 · 696 阅读 · 0 评论 -
poj 1904 King's Quest 强连通分量
讲一下建图过程,题目给出了我们一组匹配match[i] 。对于这一组匹配好的解,我们建边 i->j, 对于能匹配但是不是题目给出的匹配的边,建边j->i; 那么对于一个son和一个gril,如果属于同一个强连通且能过匹配的就一定是满足条件的 。VIEW CODE#include#include#include#include#include#include#include原创 2015-02-03 11:33:54 · 760 阅读 · 0 评论 -
poj 3160 Father Christmas flymouse 强连通+dp
首先我们可以确定的是,对于val值小于0的节点都变成0. 假设一个集合内2个房间都能任意到达,那么我就可以吧集合内的所有点的价值都取到,并且可以达到任一点。实际上集合内的每个点是相同的,这样的集合就是一个强连通分量。 那么我们就可以用tarjin算法进行强连通缩点, 最后形成一个dag的图。在dag的图上面进行dp。可以先用拓扑排序后dp。或者建反响边记忆化搜索 。VIEW CDDE原创 2015-02-02 19:17:24 · 572 阅读 · 0 评论 -
hdu 1269 强连通+并查集
这是一道典型的强连通的题目。 所谓强连通,就是对于一个有向图,若一个集合内任意2点都能过互相达,于是这个几何就是一个强连通分量。 对于任意图,都可以分解 人多个不相交的强连通集合。 对于这题目,只要用著名的tarjin算法对原图进行一次强连通缩点,若说有点都在一个强连通分量,就是yes, 否者no。 这里可以用并查集。VIEW CODE//#pragma comment(linker原创 2015-02-02 15:45:11 · 654 阅读 · 0 评论 -
HDU 2767 强连通缩点
如A能证明B ,就建一条有向边A->B。对于一个能互相证明的一个集合,必然每个2个点都能相互到达,这样的一个集合就是一个强连通集合。我们可以把他们看成一个点,剩下的就是一个DAG图了。 如要都能相互到达,每个点必然出度 >=1, 入度>1 .。所以统计有多少没有入度的点和多少没有出度的点,他们中最大的就是需要添加的边了。VIEW CODE#include#include#include原创 2015-01-29 21:25:10 · 553 阅读 · 0 评论 -
POJ 3228 最小生成树的应用
要使得路径上边的最大值最小,实际上就是沿着最小生成树走,就满足条件。故先求出最小生成树,然后保存,在dfs一遍搜索路径。VIEW CODE//#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#inclu原创 2015-01-29 11:42:38 · 672 阅读 · 0 评论 -
hdu 2063 (过山车) 2分图匹配
最基础的2分匹配,如果女生i和男生j能一起,建边i->j.一次匈牙利算法即可。VIEW CODE#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int原创 2015-01-26 19:31:09 · 480 阅读 · 0 评论 -
<图论算法之2分匹配> hdu 1281(棋盘游戏)
题意: 给一个n*m的棋盘,在上面放上车,放的车之间不能相互攻击(在同一行或者同一列就能相互攻击),并且只有某些点能放车。 问最多能放多少车,其中有多少个格子必须放才能放最多的车。这是一道很好的理解匈牙利算法的题目。 首先我们求最多放多少车,这是一个行列匹配问题。假设我们用n个左边的点代表行 ,m个右边的点放在右边,如果一个格子(x,y)能放车,那么将左边的x和右边的y连接一起建一条边。这个原创 2015-01-26 20:22:33 · 668 阅读 · 0 评论 -
poj 2728(Desert King) 最优比例生成树 (分数规划)
这题是最小生成树的一种扩展,就是求一棵树 使得 最小。 其中cost 为每条边花费,len为长度。 这实际上就是一个最优比例生成树。最优比例生成树的求解使用了分数规划的方法。 我们先任取k,假设k是最小值,那么sigma(ccost)-k*sigma(len)==0 。那么我们就新建图边权 为 ccosti-k*leni 。求一次最小生成树,如果生成树权值小于0,那么书名其实原创 2015-01-28 11:03:07 · 972 阅读 · 0 评论 -
scu oj 4442 Party(2015年四川省acm程序设计竞赛)
Partyn frogs are invited to a tea party. Frogs are conveniently numbered by 1,2,…,n.The tea party has black and green tea in service. Each frog has its own preference. He or she may drink only b原创 2015-08-10 14:29:14 · 1898 阅读 · 0 评论