求全局最小割(SW算法)】的更多相关文章

我找到的唯一能看懂的题解:[ZZ]最小割集Stoer-Wagner算法 似乎是一个冷门算法,连oi-wiki上都没有,不过洛谷上竟然有它的模板题,并且2017百度之星的资格赛还考到了.于是来学习一下. 一些定义 无向图的(全局)最小割:一个边权和最小的边集,断掉后图不联通. 算法 我们自然可以直接钦定一个 \(S\),枚举 \(T\),求最小割,其中最小值即为答案.不过复杂度过于高,大概是 \(O(n^3m)\),当遇到稠密图的时候,就是 \(O(n^5)\).(尽管这个复杂度非常虚,靠信仰或许…
题目链接:http://poj.org/problem?id=2914 思路:算法基于这样一个定理:对于任意s, t   V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Contract(s, t)操作所得的图的全局最小割. 算法框架: 1. 设当前找到的最小割MinCut 为+∞ .2. 在 G中求出任意 s-t 最小割 c,MinCut = min(MinCut, c)   .3. 对 G作 Contract(s, t)操作,得到 G'=(V', E'),若|V'| >…
Problem Description You may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa is an undeveloped country and it is threatened by the rising of sea level. Scientists predict that Nubulsa will disappear by the year of 2012. Nubulsa…
Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族. 第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙. 哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价. 现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保…
前言 StoerWagner算法是一个找出无向图全局最小割的算法,本文需要读者有一定的图论基础. 本文大部分内容与词汇来自参考文献(英文,需***),用兴趣的可以去读一下文献. 概念 无向图的割:有无向图\(G=(V,E)\),设\(C\)为图\(G\)中一些弧的集合,若从\(G\)中删去\(C\)中的所有弧能使图\(G\)不是连通图,称\(C\)图\(G\)的一个割. \(S-T\)割:使得顶点\(S\)与顶点\(T\)不再连通的割,称为\(S-T\)割 \(S-T\)最小割:包含的弧的权和最…
hdu3002 King of Destruction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1022    Accepted Submission(s): 400 Problem Description Zhou xingxing is the successor of one style of kung fu called…
借鉴:http://blog.kongfy.com/2015/02/kargermincut/ 提到无向图的最小割问题,首先想到的就是Ford-Fulkerson算法解s-t最小割,通过Edmonds–Karp实现可以在O(nm2)时间内解决这个问题(n为图中的顶点数,m为图中的边数). 但是全局最小割和s-t最小割不同,并没有给定的指定的源点s和汇点t,如果通过Ford-Fulkerson算法来解这一问题,则需要枚举汇点t(共n−1),时间复杂度为O(n2m2). Can we do bett…
http://poj.org/problem?id=2914 题意:给出n个点m条边,可能有重边,问全局的最小割是多少. 思路:一开始以为用最大流算法跑一下,然后就超时了.后来学习了一下这个算法,是个模板题.具体学习可以参考: http://blog.sina.com.cn/s/blog_700906660100v7vb.html http://www.cnblogs.com/ylfdrib/archive/2010/08/17/1801784.html #include <cstdio> #…
带有图片例子的 [BLOG] 复杂度是$(n ^ 3)$ HDU3691 // #pragma GCC optimize(2) // #pragma GCC optimize(3) // #pragma GCC optimize(4) #include <algorithm> #include <iterator> #include <iostream> #include <cstring> #include <cstdlib> #include…
#include<stdio.h> #include<string.h> #include<iostream> #define inf 0x3fffffff #define N 510 int n,ma[N][N],combine[N]; int seach(int &s,int &t) { int vis[N],i,j,tm,maxx,w[N]; memset(vis,0,sizeof(vis)); memset(w,0,sizeof(w)); tm=…
Problem Description度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族.哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士.所以这一场战争,将会十分艰难.为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族.第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙.哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价.现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进…
B - Nubulsa Expo Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVALive 5099 Description You may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa is an undeveloped country and it i…
Minimum Cut Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 8324   Accepted: 3488 Case Time Limit: 5000MS Description Given an undirected graph, in which two vertices can be connected by multiple edges, what is the size of the minimum c…
Problem DescriptionYou may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa is an undeveloped country and it is threatened by the rising of sea level. Scientists predict that Nubulsa will disappear by the year of 2012. Nubulsa…
题目大意 给一个无向图,包含 N 个点和 M 条边,问最少删掉多少条边使得图分为不连通的两个部分,图中有重边 数据范围:2<=N<=500, 0<=M<=N*(N-1)/2 做法分析 典型的无向图全局最小割,使用 Stoer-Wagner 算法 Stoer-Wagner 算法共执行 n-1 次 BFS,每次 BFS 得到一个当前图的最小 S-T 割,并且将最后 BFS 的两个点缩点,n-1 次 BFS 得到 n-1 个最小 S-T 割中的最小者就是整个无向图的全局最小割,为了讲述每…
无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集,最小割集当然就权和最小的割集. 使用最小切割最大流定理: 1.min=MAXINT,确定一个源点 2.枚举汇点 3.计算最大流,并确定当前源汇的最小割集,若比min小更新min 4.转到2直到枚举完毕 5.min即为所求输出min 复杂度很高:枚举汇点要O(n),最短增广路最大流算法求最大流是O((n^2)m)复杂度,在复杂网络中O(m)=O(n^2),算法总复杂度就是O(n^5):哪怕采用最高标号预进流算法求最大流O((n^…
[题目链接] http://poj.org/problem?id=2914 [题目大意] 求出一个最小边割集,使得图不连通 [题解] 利用stoerwagner算法直接求出全局最小割,即答案. [代码(递归)] #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int INF=0x3f3f3f3f; const int MAX_N=510; int v…
最小割Stoer-Wagner算法 割:在一个图G(V,E)中V是点集,E是边集.在E中去掉一个边集C使得G(V,E-C)不连通,C就是图G(V,E)的一个割: 最小割:在G(V,E)的所有割中,边权总和最小的割就是最小割. 求G的任意s-t最小割Min-C(s,t): 设s,t是途中的两个点且边(s,t)∈E(即s,t之间存在一条边).如果G的最小割Cut把G分成M,N两个点集 ①:如果s∈M,t∈N则Min-C(s,t)= Cut(不讨论) ②:如果s,t∈M(或者s,t∈N)则Min-C(…
题面 vjudge传送门 题解 论文题 见2016绍兴一中王文涛国家队候选队员论文<浅谈无向图最小割问题的一些算法及应用>4节 全局最小割 板题 CODE 暴力O(n3)O(n^3)O(n3) 用堆优化可以做到O(nmlog)O(nmlog)O(nmlog) 这里只写了暴力 #include <bits/stdc++.h> using namespace std; template<class T>inline void read(T &x) { char ch…
裸的全局最小割了吧 有重边,用邻接矩阵的时候要小心 #include<iostream> #include<cstdio> #include<bitset> #include<cstring> #define MOD 1000000007 #define maxn 509 using namespace std; ][],wage[maxn],in[maxn],vis[maxn]; int n,x,y,v; int find(int& s,int&a…
Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案. 算法步骤: ------------------------------------------------------------------------------------------------------------------------- (1)首先初始化,设最小割ans = INF                                …
求无向图的最小割 有没有源点都一样,不影响 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <cctype> #include <set> #include <vector> #include <stack> #include <queue&g…
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1001 整理了下之前A的题 平面图可以转化成对偶图,然后(NlogN)的可以求出图的最小割(最大流) 算法合集有具体的讲解,有兴趣的可以在网上搜下或者向我要(QQ30056882) /************************************************************** Problem: User: BLADEVIL Language: Pascal…
最小割树(Gomory-Hu Tree) 前置知识 Gomory-Hu Tree是用来解决无向图最小割的问题的,所以我们需要了解无向图最小割的定义 和有向图类似,无向图上两点(x,y)的割定义为一个边集E,满足去掉该边集后x,y不联通.最小割即为所有的割中权值之和最小的割 通过这条割我们把点集划为两个部分,x所在的一个记为\(V_x\),y所在的一个记为\(V_y\) 定义 首先我们知道,一个n个点的无向图上,两点之间本质不同的最小割只有n-1种,因此一定存在一棵树,满足树上两点的最小割等于原图…
还不是很懂,贴两篇学习的博客: http://www.hankcs.com/program/algorithm/poj-2914-minimum-cut.html http://blog.sina.com.cn/s/blog_700906660100v7vb.html 算法步骤: 1. 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和. 2. 对刚才选定的s, 更新W(A,p)(该值递增). 3. 选出A外一点p, 且W(A,p)最大的作为…
Roads 时间限制: 2 Sec  内存限制: 256 MB提交: 6  解决: 2[提交][状态][讨论版] 题目描述 In ICPCCamp, there are n towns conveniently labeled with 1,2,…,n and m bidirectional roads planned to be built. The i-th road will be built between cities ai and bi with cost ci. The build…
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; ; const int INF=0x7fffffff; int N,M,S; int a[MAXN][MAXN],dis[MAXN]; bool visit[MAXN],d[MAXN]; int StoerWagner(in…
//点标从0-n-1, 開始时先init 复杂度n^3 //对于边(u,v,flow): //g[u][v]+=flow; //g[v][u]+=flow; typedef long long ll; const int N = 305; const ll inf = 1e18; ll g[N][N], w[N]; int a[N], v[N], na[N]; ll mincut(int n) { int i, j, pv, zj; ll best = inf; for(i = 0; i < n…
http://  blog.sina.com.cn/s/blog_700906660100v7vb.html 转载:http://www.cnblogs.com/ylfdrib/archive/2010/08/17/1801784.html [ZZ]最小割集Stoer-Wagner算法 一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集:最小割集当然就权和最小的割集. 可以用最小切割最大流定理: 1.min=MAXINT,确定一个源点 2.枚举汇点 3.计算最大流,并确定当…
题意:求全局最小割 不能用网络流求最小割,枚举举汇点要O(n),最短增广路最大流算法求最大流是O(n2m)复杂度,在复杂网络中O(m)=O(n2),算法总复杂度就是O(n5):就算你用其他求最大流的算法,算法总复杂度也要O(n4).所以用网络流算法求解最小割集复杂度不会低于O(n4).所以就要用Stoer_Wagner算法.算法复杂度为O(n3).如果加堆优化,复杂度会降为O(n2logn). Stoer_Wagner算法: Stoer_Wagner算法是求无向图全局最小割的一个有效算法,最坏时…