POJ 2914 Minimum Cut (最小割模板题)
来源:互联网 发布:nginx 正则匹配 编辑:程序博客网 时间:2024/06/06 03:33
题目链接:
点击打开题目
题解:最小割模板题。
可以用网络流?不行的。枚举举汇点要
讲一下,
设
代码:
//#include <bits/stdc++.h>#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define N 500+10#define INF 0x3f3f3f3fusing namespace std;int mp[N][N];int v[N]; // v[i]代表节点i合并到的顶点int dis[N];//dis数组用来表示该点与A集合中所有点之间的边的长度之和bool vis[N]; //是否已并入集合int n,m;int Stoer_Wagner(int n){ int i, j, res = INF; for(i = 0; i < n; i ++) v[i] = i;////保存顶点 ,固定顶点为自己 while(n > 1) { //pre用来表示之前加入A集合的点 //我们每次都以0点为第一个加入A集合的点 int k = 1, pre = 0; for(i = 1; i < n; i ++){ dis[v[i]] = mp[v[0]][v[i]]; if(dis[v[i]] > dis[v[k]]) k = i; } memset(vis, 0, sizeof(vis)); vis[v[0]] = true;//标记该点已经加入A集合 for(i = 1; i < n; i ++) { if(i == n-1)//最后一次加入的点就要更新答案 { res = min(res, dis[v[k]]); for(j = 0; j < n; j ++) //将该点合并到pre上,相应的边权就要合并 { mp[v[pre]][v[j]] += mp[v[j]][v[k]]; mp[v[j]][v[pre]] += mp[v[j]][v[k]]; } v[k] = v[-- n];//删除最后一个点 } vis[v[k]] = true; pre = k; k = -1; for(j = 1; j < n; j ++) if(!vis[v[j]]) { //将上次求的 k 加入集合,合并与它相邻的边到割集 dis[v[j]] += mp[v[pre]][v[j]]; if(k == -1 || dis[v[k]] < dis[v[j]]) k = j; } } } return res;}int main(){ while(~scanf("%d%d", &n, &m)) { memset(mp, 0, sizeof(mp)); int a, b, c; for(int i = 0; i < m; i++) { scanf("%d%d%d", &a, &b, &c); //从 0 开始 mp[a][b] += c; mp[b][a] += c; } printf("%d\n", Stoer_Wagner(n)); } return 0;}
阅读全文
1 0
- POJ 2914 Minimum Cut (最小割模板题)
- POJ2914 Minimum Cut(最小割模板题)
- POJ 2914 Minimum Cut 全局最小割
- POJ 2914 Minimum Cut 最小割
- 【最小割】POJ-2914 Minimum Cut
- poj 2914 Minimum Cut(全局最小割)
- POJ 2914 Minimum Cut 全局最小割
- POJ 2914 Minimum Cut 全局最小割
- POJ 2914 Minimum Cut Stoer-Wagner(全局最小割)
- poj 2914 Minimum Cut(无向图最小割)
- poj 2914 Minimum Cut(全局最小割)
- POJ 2914-Minimum Cut(Stoer_Wagner最小割算法)
- POJ-2914 Minimum Cut(全局最小割)
- POJ 2914 Minimum Cut 最小割集Stoer-Wagner算法(全局最小割)
- poj 2914 Minimum Cut 求无向图的最小割 Stoer-Wagner算法模板
- POJ2914 Minimum Cut 【全局最小割Stoer-Wagner模板题】
- POJ 2914 Minimum Cut //无向图求最小割
- poj 2914 Minimum Cut 无向图最小割
- [LeetCode]415. Add Strings(计算两个字符串表示的数字的和)
- Linux中MySQL中文乱码
- sublime 搭建 python 开发环境
- Collection与Collections的区别
- MongoDB(二)
- POJ 2914 Minimum Cut (最小割模板题)
- mui 头部tab代码2
- 编程第五十四天
- JAVA环境配置入门教程
- POJ3279-Fliptile
- Unable to start the daemon process
- 资源分享 | 摄影视频 | 碧水天颜摄影视频
- codevs 2594 解题报告 启发式搜索
- opencv 编译及简介显示一张图片