图论-最小割
文章平均质量分 82
iHge2k
专注数据结构和算法
展开
-
poj 3281(网络流+拆点)
题目链接:http://poj.org/problem?id=3281思路:设一个超级源点和一个超级汇点,源点与食物相连,饮料与汇点相连,然后就是对牛进行拆点,一边喜欢的食物相连,一边与喜欢的饮料相连,拆分的牛之间也连边,所有边的容量均为1.然后跑最大流就可以了。 1 #include 2 #include 3 #include 4 #include 5原创 2014-05-26 18:04:43 · 411 阅读 · 0 评论 -
hdu 3491(最小割+拆点)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3491思路:由于每个城市顶点都具有权值,所以对于每个城市拆成两个点u和所对应的u',之间连容量为w的边,S,H两点不会算在最小割中,所以将这两点拆点,拆点后容量为无穷,添加源点vs(0)和汇点vt(2*n+1),加边(vs,s,INF)和(t+n,vt,INF),对于两相连的城市,用其中一个点的第二原创 2014-05-26 17:57:56 · 639 阅读 · 0 评论 -
hdu 4289(最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4289思路:求最小花费,最小割应用,将点权转化为边权,拆点,(i,i+n)之间连边,容量为在城市i的花费,然后就是若u,v之间有路,则连边(u+n,v),(v+n,u).最后就是跑最大流了。 1 #include 2 #include 3 #include 4 #in原创 2014-05-26 18:05:14 · 417 阅读 · 0 评论 -
hdu 3251(最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3251思路:选择1为源点,n+1为汇点,然后原图中每条边为新图的边,容量为边权,最后将每个可以选择的点与汇点连接,容量为点权,这样跑一遍最大流之后,求出最小割,然后所有的总收益减去最小割就是可能的最大收益了。View Code 1 #include 2 #include原创 2014-05-26 17:58:06 · 475 阅读 · 0 评论 -
poj 2125(最小割)
题目链接:http://poj.org/problem?id=2125思路:将最小点权覆盖转化为最小割模型,于是拆点建图,将点i拆成i,i+n,其中vs与i相连,边容量为w[i]-,i+n与vt相连,边容量为w[i]+,如果i,j有边相连,则i与j+n连边inf.从而跑最大流求解。对于输出解决放案,我们可以在残余网络中进行dfs,从vs出发,对于那些in遍历到的点,说明之前有j->i的边(jj原创 2014-05-26 18:04:26 · 460 阅读 · 0 评论 -
poj 3308(最小点权覆盖、最小割)
题目链接:http://poj.org/problem?id=3308思路:裸的最小点权覆盖,建立超级源点和超级汇点,将源点与行相连,容量为这行消灭敌人的代价,将列与汇点相连,容量为这列消灭敌人的代价,对于每一个敌人(x,y),连边x->y,容量为inf,这样就说明选取的点覆盖了那些边(敌人),然后跑最大流求最小割即可。PS:这里是乘积最小,要取对数转化为和最小。 1 #in原创 2014-05-26 18:04:45 · 422 阅读 · 0 评论 -
poj 2914(stoer_wanger算法求全局最小割)
题目链接:http://poj.org/problem?id=2914思路:算法基于这样一个定理:对于任意s, t V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Contract(s, t)操作所得的图的全局最小割。 算法框架: 1. 设当前找到的最小割MinCut 为+∞ 。2. 在 G中求出任意 s-t 最小割 c,MinCut = min(MinCut,原创 2014-05-26 18:04:53 · 616 阅读 · 0 评论 -
poj 1815(最小割、割集)
题目链接:http://poj.org/problem?id=1815思路:题目要求是剔除多少个点,可以将其转化为剔除多少条边,因此需要拆点,将点i拆成i,i+n,便容量为1,表示每个人起的传递作用只能是一次。然后就是枚举了,删除某条边,如果求出的最小割比原来的要小,说明减少的是割边集。 1 #include 2 #include 3 #include 4 #i原创 2014-05-26 18:04:57 · 462 阅读 · 0 评论 -
poj 3204(最小割)
题目链接:http://poj.org/problem?id=3204思路:显然只有增大那最小割边集上的边才能增加最大流,因此,我们可以先跑一遍最大流,然后对于那些满足条件的边u->v,当且仅当从源点开始沿着正向边能遍历到u,从汇点开始沿着正向边能遍历到v. 1 #include 2 #include 3 #include 4 #include 5 #in原创 2014-05-26 18:04:38 · 515 阅读 · 0 评论 -
poj 3084(最小割)
题目链接:http://poj.org/problem?id=3084思路:题目的意思是不让入侵者进入保护的房间,至少需要锁几道门。网络流建模:设一个超级源点,源点与有入侵者的房间相连,边容量为inf,对于那些被入侵的房间,假设房间a有们通往b,则连边a->b,容量为inf,连边b->a,容量为1,因为控制权在a,所以只要进入房间a,就能进入房间b,而相反,对于那些进入房间b的入侵者, 只要锁原创 2014-05-26 18:05:02 · 394 阅读 · 0 评论 -
hdu 3452(最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3452思路:一颗带边权的树,最小割求树根和叶子结点不连通。可设汇点为n+1,注意只用叶子结点才能和汇点连容量为inf的边。View Code 1 #include 2 #include 3 #include 4 #include 5 #includeset>原创 2014-05-26 17:58:12 · 365 阅读 · 0 评论 -
hdu 3987(求割边最小的最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3987思路:我们知道最小割是不唯一的,这里要我们求割边最少的最小割,比较好做法有:第一种: 建边的时候每条边权 w = w * (E + 1) + 1; 这样得到最大流 maxflow / (E + 1) ,最少割边数 maxflow % (E + 1) 道理很简单,如果原先两原创 2014-05-26 17:58:17 · 834 阅读 · 0 评论 -
hdu 3046(最小割)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3046思路:最小割的入门题,设源点为0,汇点为n*m+1,源点与点为2的连一天容量为inf的边,汇点与点为1的连容量为inf的边,每个相邻网格连容量为1的边。View Code 1 #include 2 #include 3 #include 4 using namespa原创 2014-05-26 17:57:49 · 346 阅读 · 0 评论