hdu 3002 全局最小割模板题
来源:互联网 发布:网络三大奇书之一 编辑:程序博客网 时间:2024/06/05 07:06
输入注意处理一下
代码:
#include <iostream>#include <cstdio>#include <string.h>using namespace std;const int maxn=110;const int inf=0x3f3f3f3f;int n,m,res,v[maxn],mat[maxn][maxn],dis[maxn];bool vis[maxn];int Stoer_Wagner(int n){ int i, j; int res = inf; for (i = 0; i < n; i++) v[i] = i+1;//初始化第i个结点就是i while (n > 1) { int maxp = 1,prev = 0; for (i = 1; i < n; i++) //初始化到已圈集合的割大小,并找出最大距离的顶点 { dis[v[i]] = mat[v[0]][v[i]]; if (dis[v[i]] > dis[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,dis[v[maxp]]); for (j = 0; j < n; j++) //合并最后一个点以及推出它的集合中的点 { mat[v[prev]][v[j]] += mat[v[j]][v[maxp]]; mat[v[j]][v[prev]] = mat[v[prev]][v[j]]; } v[maxp] = v[--n];//第maxp个节点去掉,第n个节点变成第maxp个 } vis[v[maxp]] = true; prev = maxp; maxp = -1; for (j = 1; j < n; j++) if (!vis[v[j]]) //将上次求的maxp加入集合,合并与它相邻的边到割集 { dis[v[j]] += mat[v[prev]][v[j]]; if (maxp == -1 || dis[v[maxp]] < dis[v[j]]) maxp = j; } } } return res;}int main(){//374MS1620K while (scanf("%d%d",&n,&m)==2){ memset(mat,0,sizeof (mat)); int x,y,z; while(m--){ scanf("%d%d%d",&x,&y,&z); mat[x+1][y+1] += z; mat[y+1][x+1] += z; } printf("%d\n",Stoer_Wagner(n)); }}
0 0
- hdu 3002 全局最小割模板题
- hdu 3691 全局最小割模板题 + 一点学习记录
- 全局最小割模板
- 全局最小割模板
- 全局最小割模板 poj2914
- poj 2914&&hdu 3002 全局最小割Stoer-Wagner算法模板
- HDU 3691 全局最小割
- 最小割集 hdu 3002 ( 模板)
- 【HDU】3452 Bonsai 最小割模板题
- POJ2914 Minimum Cut 【全局最小割Stoer-Wagner模板题】
- HDU 3691 Nubulsa Expo (全局最小割)
- HDU-3691-全局最小割变形
- poj 2914 全局最小割入门+Stoer_Wagner模板
- 全局最小割
- 全局最小割
- poj2914 全局最小割
- 全局最小割
- poj 2914 全局最小割 stoer wagner算法 最小割模板
- 简单的js开关灯效果(附图)
- linux下python安装
- 中国象棋将帅问题
- 使用webpack2.0 搭建前端项目
- VS运行程序一闪而过
- hdu 3002 全局最小割模板题
- Apache POI实现EXcel的数据导入数据库
- RabbitMQ基础概念详解
- memset和指针new一起使用时请小心
- iOS去掉UISearchBar的灰色背景框
- FineUIMvc随笔(4)自定义回发参数与自定义回发
- leetcode [Length of Last Word]
- 洛谷P3301 [SDOI2013]方程
- java2ee