HDU 3002 King of Destruction(SW求最小割的值)
来源:互联网 发布:帝国cms 首页调用内容 编辑:程序博客网 时间:2024/05/29 11:45
还是一道很典型的求最小割的值,算法依旧。
这次做这道题,我模拟了一下算法实行,发现这个模板在对点删除的处理上很巧妙。通过这次研究,算法大致的步骤和实现方法,我已经知道是怎么样的流程,但是具体的证明之类的还是很迷糊。
代码如下:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 110;const int INF = 0x3fffffff;int n, m;int g[N][N], v[N], d[N];int Stoer_wagner() { bool vis[N]; int i, j, res = INF; for ( i = 0; i < n; ++i ) v[i] = i; while ( n > 1 ) { int maxp = 1, prev = 0; for ( i = 1; i < n; ++i ) { d[v[i]] = g[v[0]][v[i]]; if ( d[v[i]] > d[v[maxp]] ) maxp = i; } memset( vis, 0, sizeof(vis) ); vis[v[0]] = true; for ( i = 1; i < n; i++ ) { if ( i == n-1 ) { res = min( res, d[v[maxp]] ); for ( j = 0; j < n; ++j ) { g[v[prev]][v[j]] += g[v[j]][v[maxp]]; g[v[j]][v[prev]] = g[v[prev]][v[j]]; } v[maxp] = v[--n]; } vis[v[maxp]] = true; prev = maxp; maxp = -1; for ( j = 1; j < n; ++j ) if ( !vis[v[j]] ) { d[v[j]] += g[v[prev]][v[j]]; if ( maxp == -1 || d[v[maxp]] < d[v[j]] ) maxp = j; } } } return res;} int main(){ while ( scanf("%d%d", &n, &m ) == 2 ) { memset( g, 0, 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()); }}
- HDU 3002 King of Destruction(SW求最小割的值)
- HDU 3002 King of Destruction(全局(无向图)最小割(SW))
- hdu 3002 King of Destruction(全局最小割,StoerWagner算法)
- King of Destruction HDU
- HDU 3691 Nubulsa Expo(SW算法求最小割)
- 求全局最小割(SW算法)
- sw算法求最小割学习(*)
- hdoj 3002 King of Destruction (最小割边集+Stoer-Wagner算法)
- sw算法求最小割学习
- SW算法求全局最小割
- hdu 3987(求边最少的最小割)
- HDU 3035 War(对偶图求最小割)
- hdu 4738 Caocao's Bridges 【求最小代价的割边(桥)】
- HDU 6214 Smallest Minimum Cut(求最小割的最少边数)
- 求网络的最小割
- 最小割集 hdu 3002 ( 模板)
- pku2914(求最小割)
- hdu 3987(求割边最小的最小割)
- java学习笔记_03_面向对象
- 出错汇总
- vs2010 opencv2.4 中出现的问题
- ExtJS点击k.getBoundingClientRect();未指明的错误,问题解决
- PHP漏洞全解(二)-命令注入攻击
- HDU 3002 King of Destruction(SW求最小割的值)
- PowerDesigner小技巧
- dos下,解决端口占用问题
- PHP漏洞全解(三)-客户端脚本植入
- 项目中用log4j记录日志到指定目录
- Oracle ClusterwarePRCT-1011 : Failed to run "oifcfg". Detailed error: null
- 数组和指针的使用
- 题目1038:Sum of Factorials 九度
- 使用C#调用存储过程,用函数合理组织代码,使程序更加的清晰(示例)