POJ 2914 Minimum Cut 最小割算法题解
来源:互联网 发布:c 编写组态软件 编辑:程序博客网 时间:2024/06/05 01:14
最标准的最小割算法应用题目。
核心思想就是缩边:先缩小最大的边,然后缩小次大的边,依此缩小
基础算法:Prime最小生成树算法
不过本题测试的数据好像怪怪的,同样的算法时间运行会差别很大,而且一样的代码替换,居然会WA。系统出错的几率很小,难倒测试系统本题会有错误?
懒得继续测试这道题的系统了,反正算法正确,AC。
#include <stdio.h>#include <string.h>#include <limits.h>const int MAX_N = 500;int N, M, A, B, C, S, T;int gra[MAX_N][MAX_N], dis[MAX_N];bool vis[MAX_N], delVer[MAX_N];inline int min(int a, int b) { return a < b ? a : b; }int search(int V)//V为计算剩下多少顶点了{memset(vis, 0, sizeof(vis));memset(dis, 0, sizeof(dis));int curMax = 0, cur = 0;S = 0, T = 0;for (int i = 1; i < V; i++){curMax = 0;for (int j = 1; j < N; j++){if (!vis[j] && !delVer[j]) dis[j] += gra[cur][j];}for (int j = 1; j < N; j++){if (!vis[j] && !delVer[j] && dis[j] > curMax){curMax = dis[j];cur = j;}}vis[cur] = true;if (T == cur) return 0; //图不相连,提前结束循环,割点为0S = T; T = cur;//目的得到最后和倒数第二节点,以便进行缩图}return curMax;}//核心思想:先缩小最大的边,然后缩小次大的边,依此缩小int Stoer_Wagner(){memset(delVer, 0, sizeof(delVer));int minCut = INT_MAX;for (int v = N; v > 1; v--) //共N-1条边, 当前v个点{minCut = min(minCut, search(v));if (minCut == 0) return 0;//一点优化,提前结束delVer[T] = true;for (int i = 0; i < N; i++)if (!delVer[i]) gra[S][i] = gra[i][S] += gra[T][i];}return minCut == INT_MAX ? 0 : minCut;//只有一个顶点的时候返回0}int main(){while (~scanf("%d %d", &N, &M)){memset(gra, 0, sizeof(gra));for (int i = 0; i < M; i++){scanf("%d %d %d", &A, &B, &C);gra[B][A] = gra[A][B] += C;}printf("%d\n", Stoer_Wagner());}return 0;}
1 0
- POJ 2914 Minimum Cut 最小割算法题解
- POJ 2914-Minimum Cut(Stoer_Wagner最小割算法)
- 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 求无向图的最小割 Stoer-Wagner算法模板
- poj 2914 Minimum Cut(无向图最小割 Stoer-Wagner算法)
- poj 2914 Minimum Cut 【无向图全局最小割 Stoer-wagner算法】
- 无向带权图最小割stoer-wagner算法(poj 2914 Minimum cut)
- POJ 2914 Minimum Cut 无向图最小割SW算法
- POJ 2914 Minimum Cut //无向图求最小割
- poj 2914 Minimum Cut 无向图最小割
- POJ 2914 Minimum Cut 无向图最小割
- POJ 2914 Minimum Cut Stoer-Wagner(全局最小割)
- java synchronized详解
- 300万微信公众号迎来广告时代
- Android如何多人开发
- a标签position为absolute时,IE无法点击(a position:absolute bug ie)
- C++“准”标准库Boost学习指南(2):Boost.Conversion
- POJ 2914 Minimum Cut 最小割算法题解
- Cocos2d-x Lua游戏开发之Lua 面向对象编程
- Windows主机与VirtualBox虚拟机下的Linux共享网络和windows本机ip和dns地址怎么查?
- achartengin的使用
- Git教程小结
- 工作日志2014-07-10
- Linux下命令行方式安装oracle数据库。
- 咱网面试题
- 2014年最新前端开发面试题(题目列表+答案 完整版)