无向带权图最小割stoer-wagner算法(poj 2914 Minimum cut)
来源:互联网 发布:商业地产it 编辑:程序博客网 时间:2024/05/21 11:04
这题其实就是知道stoer wagner 算法就能解决不知道就不行.
stoer wagner 算法
这个算法基于减治的思想. 设
s,t∈M或者s,t∈N min−cut≤cut(s,t) s∈M,t∈N反之亦然min−cut=cut(s,t)
详细过程见论文
《store-wagner》
code
#include <cstdio>#include <iostream>#include <vector>#include <queue>#include <algorithm>#include <cmath>#include <cstring>#include <map>#include <set>#include <stack>#define fi first#define se second#define INF 0x3f3f3f3f#define INF64 0x3f3f3f3f3f3f3f3fusing namespace std;typedef long long LL;typedef pair<int,int> Pair;const int maxn = 5000+10;const int MAX_V = 500+10;int G[MAX_V][MAX_V];int w[MAX_V];//权重int vis[MAX_V];int v[MAX_V];//顶点int stoer_wagner(int n){ int min_cut = INF; for(int i=0 ; i<n ;++i)v[i] = i;//初始化 while (n>1) { memset(vis,0,sizeof(vis)); memset(w,0,sizeof(w)); int s = 0; for(int i=1 ; i<n ; ++i) { int t = -1;//A外权值最大点 for(int j= 1 ; j<n ; ++j) if(!vis[v[j]]){ w[v[j]]+=G[v[s]][v[j]];//与A相连接的顶点的权重 if(t == -1 || w[v[t]]<w[v[j]])t = j; } vis[v[t]] = 1; if(i == n-1){//合并s,t更新权值 min_cut = min(min_cut,w[v[t]]); for(int j=0 ; j<n ; ++j) G[v[j]][v[s]] = G[v[s]][v[j]] = G[v[s]][v[j]]+G[v[j]][v[t]]; v[t] = v[--n]; }else s = t; } } return min_cut;}int main() { int n,m; while (scanf("%d%d",&n,&m )!=EOF) { memset(G,0,sizeof(G)); while (m--) { int u,v,w; scanf("%d%d%d",&u,&v,&w ); G[u][v] = G[v][u] =G[u][v] + w; } printf("%d\n",stoer_wagner(n)); } return 0;}
复杂度为
0 0
- 无向带权图最小割stoer-wagner算法(poj 2914 Minimum cut)
- poj 2914 Minimum Cut 求无向图的最小割 Stoer-Wagner算法模板
- poj 2914 Minimum Cut(无向图最小割 Stoer-Wagner算法)
- poj 2914 Minimum Cut 【无向图全局最小割 Stoer-wagner算法】
- poj 2914 无向图最小割 Stoer-Wagner算法
- poj 2914(无向图最小割Stoer-Wagner算法)
- POJ 2914 Minimum Cut 最小割集Stoer-Wagner算法(全局最小割)
- POJ 2914 Minimum Cut Stoer-Wagner(全局最小割)
- POJ 2914 Minimun Cut (Stoer-Wagner, 无向图最小割)
- POJ_P2914 Minimum Cut(Stoer-Wagner算法 全局最小割)
- poj 2914 最小割 Stoer-Wagner 算法
- POJ 2914 Minimum Cut(求全图的最小割Stoer-Wagner)
- POJ2914无向图最小割Stoer-Wagner算法
- POJ2914 Minimum Cut 【全局最小割Stoer-Wagner模板题】
- POJ 2914 Minimum Cut //无向图求最小割
- poj 2914 Minimum Cut 无向图最小割
- POJ 2914 Minimum Cut 无向图最小割
- poj 2914 Minimum Cut(无向图最小割)
- 并查集—Virtual Friends
- Spring初始化Bean方法
- 机器学习之文本特征选择
- Ubuntu15安装Docker
- 排序——插入排序
- 无向带权图最小割stoer-wagner算法(poj 2914 Minimum cut)
- 对字符串数字 进行排序操作
- Android中解析XML的三种方式
- 指向指针的指针
- JQuery选择器+事例
- CF 219B
- springMVC源码分析--HttpMessageConverter数据转化(一)
- 利用Markdown创建表格
- opencv 学习之sobel算子学习