图的全局最小割的Stoer-Wagner算法及例题
Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案。
算法步骤:
-------------------------------------------------------------------------------------------------------------------------
(1)首先初始化,设最小割ans = INF |
(2)任选一个顶点u加入集合S,定义W(S,p)为S中的所有点到S外一点p的权值总和 |
(3)根据选定的u更新W(S,p)的值 |
(4)选出W(S,p)中值最大的点作为新的S,若S=G(V),则继续步骤(3) |
(5)最后进入S的两点s,t,用W(S,t)更新ans的值 |
(6)新建顶点c,边权w(c,v) = w(s,v)+w(t,v),删除顶点s,t及其相连的边 |
(7)若|V| > 1,则继续步骤(2) |
-------------------------------------------------------------------------------------------------------------------------
步骤(2)-(5)就是找出两个顶点,并求出它们的最小割W(S,t),步骤(6)是删除这两个顶点,重复操作,直至顶点数变为1
复杂度:O(n^3)
例题: POJ 2914 Minimum Cut
裸的最小割
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#define Mod 1000000007
using namespace std;
#define N 506 int dis[N],node[N];
int ans;
int mp[N][N];
int vis[N]; int Sto_Wag(int n)
{
int maxi,pre,m;
int i,j;
for(i=;i<=n;i++)
node[i] = i;
while(n > )
{
m = -,maxi = ;
for(i=;i<=n;i++)
{
dis[node[i]] = mp[node[]][node[i]];
vis[node[i]] = ;
if(dis[node[i]] > m)
{
m = dis[node[i]];
maxi = i;
}
}
pre = ;
vis[node[]] = ;
for(j=;j<=n;j++)
{
vis[node[maxi]] = ;
if(j == n)
{
ans = min(ans,m);
for(i=;i<=n;i++)
{
mp[node[pre]][node[i]] += mp[node[maxi]][node[i]];
mp[node[i]][node[pre]] += mp[node[maxi]][node[i]];
}
node[maxi] = node[n--];
}
else
{
pre = maxi;
m = -;
for(i=;i<=n;i++)
{
if(!vis[node[i]])
{
dis[node[i]] += mp[node[pre]][node[i]];
if(dis[node[i]] > m)
{
m = dis[node[i]];
maxi = i;
}
}
}
}
}
}
return ;
} int main()
{
int n,m,u,v,w;
while(scanf("%d%d",&n,&m)!=EOF)
{
ans = Mod;
memset(mp,,sizeof(mp));
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
u++,v++;
mp[u][v] += w;
mp[v][u] += w;
}
Sto_Wag(n);
printf("%d\n",ans);
}
return ;
}
图的全局最小割的Stoer-Wagner算法及例题的更多相关文章
- ZOJ 2753 Min Cut (Destroy Trade Net)(无向图全局最小割)
题目大意 给一个无向图,包含 N 个点和 M 条边,问最少删掉多少条边使得图分为不连通的两个部分,图中有重边 数据范围:2<=N<=500, 0<=M<=N*(N-1)/2 做 ...
- 全局最小割StoerWagner算法详解
前言 StoerWagner算法是一个找出无向图全局最小割的算法,本文需要读者有一定的图论基础. 本文大部分内容与词汇来自参考文献(英文,需***),用兴趣的可以去读一下文献. 概念 无向图的割:有无 ...
- poj 2914(stoer_wanger算法求全局最小割)
题目链接:http://poj.org/problem?id=2914 思路:算法基于这样一个定理:对于任意s, t V ∈ ,全局最小割或者等于原图的s-t 最小割,或者等于将原图进行 Cont ...
- POJ 2914 Minimum Cut Stoer Wagner 算法 无向图最小割
POJ 2914 题意:给定一个无向图 小于500节点,和边的权值,求最小的代价将图拆为两个联通分量. Stoer Wagner算法: (1)用类似prim算法的方法求"最大生成树" ...
- 全局最小割Stoer-Wagner算法
借鉴:http://blog.kongfy.com/2015/02/kargermincut/ 提到无向图的最小割问题,首先想到的就是Ford-Fulkerson算法解s-t最小割,通过Edmonds ...
- HDU 6081 度度熊的王国战略(全局最小割Stoer-Wagner算法)
Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更 ...
- 求全局最小割(SW算法)
hdu3002 King of Destruction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- POJ 2914 Minimum Cut (全局最小割)
[题目链接] http://poj.org/problem?id=2914 [题目大意] 求出一个最小边割集,使得图不连通 [题解] 利用stoerwagner算法直接求出全局最小割,即答案. [代码 ...
- HDU 3691 Nubulsa Expo(全局最小割Stoer-Wagner算法)
Problem Description You may not hear about Nubulsa, an island country on the Pacific Ocean. Nubulsa ...
随机推荐
- 【精心推荐】几款极好的 JavaScript 文件上传插件
文件上传功能作为网页重要的组成部分,几乎无处不在,从简单的单个文件上传到复杂的批量上传.拖放上传,需要开发者花费大量的时间和精力去处理,以期实现好用的上传功能.这篇文章向大家推荐几款很棒的 JavaS ...
- css通用小笔记03——浏览器窗口变小 div错位的问题
我最近写网页的时候,经常碰到一个普遍的问题,经过我的查阅和尝试,终于解决了这一问题,这里有两种方法提供给大家,如果博友还有更好的方法,欢迎补充. 一.使用min-width属性: 我们先看看下面这段代 ...
- CodeSmith连接不上MySql数据库的解决办法
下载地址是http://dev.mysql.com/downloads/mirror.php?id=403020 请先注册登录后才能下载mysql-connector-net-6.3.7.msi这个文 ...
- Day Tip:SharePoint 2013 *.ascx.g.cs文件
在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码: ...
- xmpp整理笔记:xmppFramework框架的导入和介绍
一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...
- Android 手机卫士--xutils说明与下载方法使用
xUtils简介 xUtils 包含了很多实用的android工具. xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词) ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- Loader加载器
今天学到了这个Loader,浅谈一下自己的看法: 1.定义 Loader是一个加载器,可以用来它访问数据,可以看做访问数据的机器(好比挖掘机).装再器从android3.0开始引进,它使得在activ ...
- 【代码笔记】iOS-轮询弹出框
一,效果图. 二,工程图. 三,代码. RootViewController.m #import "RootViewController.h" //加入弹出框的头文件 #impor ...
- iOS 9 使用HTTP的方法
问题 在ios 9中使用HTTP请求,Xcode就会抛出下面的Exception: App Transport Security has blocked a cleartext HTTP (http: ...