图论:Stoer-Wagner算法
利用Stoer-Wagner算法求无向图最小割
直接给出算法描述和过程实现:
算法步骤:
. 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和.
. 对刚才选定的s, 更新W(A,p)(该值递增).
. 选出A外一点p, 且W(A,p)最大的作为新的s, 若A!=G(V), 则继续2.
. 把最后进入A的两点记为s和t, 用W(A,t)更新cut.
. 新建顶点u, 边权w(u, v)=w(s, v)+w(t, v), 删除顶点s和t, 以及与它们相连的边.
. 若|V|!=1则继续1.
然后题目POJ2914的意思是去掉一些边使原图变成两个连通分量并且去掉边的权值之和最小,如果要是去掉的边最少的话让所有边权值为1就好了
int n,m;
int v[maxn],d[maxn],vis[maxn];
int G[maxn][maxn];
v表示经过合并之后的节点,d表示w(A,v[i])
然后直接给出实现:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
const int INF=0x7f7f7f7f;
int n,m;
int v[maxn],d[maxn],vis[maxn];
int G[maxn][maxn];
int Stoer_Wagner(int n)
{
int res=INF;
for(int i=;i<n;i++) v[i]=i;//初始化第i个结点就是i
while(n>)
{
int maxp=,prev=;
for(int i=;i<n;i++)
{
//初始化到已圈集合的割大小,并找出最大距离的顶点
d[v[i]]=G[v[]][v[i]];
if(d[v[i]]>d[v[maxp]]) maxp=i;
}
memset(vis,,sizeof(vis));
vis[v[]]=;
for(int i=;i<n;i++)
{
if(i==n-)
{
//只剩最后一个没加入集合的点,更新最小割
res=min(res,d[v[maxp]]);
for(int j=;j<n;j++)
{
//合并最后一个点以及推出它的集合中的点
G[v[prev]][v[j]]+=G[v[j]][v[maxp]];
G[v[j]][v[prev]]=G[v[prev]][v[j]];
}
//第maxp个节点去掉,第n个节点变成第maxp个
v[maxp]=v[--n];
}
vis[v[maxp]]=;
prev=maxp;
maxp=-;
for(int j=;j<n;j++)
//将上次求的maxp加入集合,合并与它相邻的边到割集
if(!vis[v[j]])
{
d[v[j]]+=G[v[prev]][v[j]];
if(maxp==-||d[v[maxp]]<d[v[j]]) maxp=j;
}
}
}
return res;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(G,,sizeof(G));
int x,y,z;
while(m--)
{
scanf("%d%d%d",&x,&y,&z);
G[x][y]+=z;
G[y][x]+=z;
}
printf("%d\n",Stoer_Wagner(n));
}
return ;
}
像这种完全成熟的算法,会用即可,不用再这个的基础上做任何改动
图论:Stoer-Wagner算法的更多相关文章
- POJ 2914 Minimum Cut Stoer Wagner 算法 无向图最小割
POJ 2914 题意:给定一个无向图 小于500节点,和边的权值,求最小的代价将图拆为两个联通分量. Stoer Wagner算法: (1)用类似prim算法的方法求"最大生成树" ...
- 图论(floyd算法):NOI2007 社交网络
[NOI2007] 社交网络 ★★ 输入文件:network1.in 输出文件:network1.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 在社交网络( ...
- 图论之Dijkstra算法
Dijkstra算法是图论中经典的最短路径算法之一,主要用于解决单源最短路径问题. 单源最短路径问题,即求某个源节点到其他各个节点的最短路径. Dijkstra算法采用了贪心算法的思想,如图求1号节点 ...
- 图论(二分图,KM算法):HDU 3488 Tour
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- poj Minimum( CutStoer Wagner算法)
Minimum Cut 题目: 给出一张图.要求你删除最小割权和图. 算法分析: //////////////////// 转载 --- ylfdrib ///////////////// ...
- 图论——最短路径 Dijkstra算法、Floyd算法
1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...
- 图论:Dinic算法
解决最大流问题我搜到了一堆的算法:EK算法.FF算法.Dinic算法.SAP算法.ISAP算法 然而并没有什么鸟用 掌握最常见的Dinic就够了,据说极限优化的ISAP比Dinic更快一些..我当不知 ...
- 图论:Gale-Shapley算法
Gale-Shapley算法又叫做延迟认可算法,它可以解决这么一个问题 一共有N位男士和N位女士 每位男士对每位女士都有一个好感度,让他们结合成为N对夫妻,要求男士优先表白,最后问结合情况 第一轮,每 ...
- 图论:KM算法
如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就 ...
随机推荐
- 当应用出现 access violation at address in module时
Delphi2010和XE10,midas是不同的版本,之前开发的两个系统,基于不同的Delphi版本,经常出现access violation at address in module错误.特别是当 ...
- No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser").警告解决方法
在使用BeautifulSoup库时出现该警告,虽然不影响正常运行,但强迫症不能忍啊!! 详细警告信息如下: UserWarning: No parser was explicitly specifi ...
- elasticsearch 拼音+ik分词,spring data elasticsearch 拼音分词
elasticsearch 自定义分词器 安装拼音分词器.ik分词器 拼音分词器: https://github.com/medcl/elasticsearch-analysis-pinyin/rel ...
- How to add a webpart to your website
I have download a webpart that can play media on the website from the internet.Then how to add ...
- ArcPy:GeoJSON转ArcGIS Geometry
import arcpy geojson = {"type":"Polygon","coordinates":[[[120.81878662 ...
- JAVA虚拟机(一):内存区域
根据<java虚拟机规范第二版>规定,现阶段的java内存区域总体如下图 其中,方法区和堆是所有线程共享区域. 虚拟机栈,本地方法栈,程序计数器是各线程独占. 概述一下各个区域 先说说线程 ...
- PostgreSQL基本配置
记一下Postgresql的基本操作,在Ubuntu下使用apt-get安装是不会像MySQL那样都配置好了,而是要安装后再配置: 1. 基本安装 # 安装postgresql和pgadmin(一个管 ...
- deeplearning.ai课程学习(1)
本系列主要是我对吴恩达的deeplearning.ai课程的理解和记录,完整的课程笔记已经有很多了,因此只记录我认为重要的东西和自己的一些理解. 第一门课 神经网络和深度学习(Neural Netwo ...
- 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)
首先贴上代码原作者的github:https://github.com/chenyuntc/simple-faster-rcnn-pytorch(非代码作者,博文只解释代码) 今天看完了simple- ...
- http请求的过程
http请求格式: http请求格式由四部分组成,分别是:请求行,请求头,空行,消息体,每个部分占一行. 请求行是消息体的第一行,由三部分组成,分别是:请求方法,请求资源的url,http的版本号. ...