无向图最小割
来源:互联网 发布:sql server 2005 端口 编辑:程序博客网 时间:2024/04/30 08:57
ACM模版
无向图最小割
/* * INIT: 初始化邻接矩阵g[][] * CALL: res = mincut(n); * 注: Stoer-Wagner Minimum Cut; * 找边的最小集合,若其被删去则图变得不连通(我们把这种形式称为最小割问题) */#define typec int // type of resconst typec inf = 0x3f3f3f3f; // max of resconst typec maxw = 1000; // maximum edge weightconst typec V = 10010;typec g[V][V], w[V];int a[V], v[V], na[V];typec minCut(int n){ int i, j, pv, zj; typec best = maxw * n * n; for (i = 0; i < n; i++) { v[i] = i; // vertex: 0 ~ n-1 } while (n > 1) { for (a[v[0]] = 1, i = 1; i < n; i++) { a[v[i]] = 0; na[i - 1] = i; w[i] = g[v[0]][v[i]]; } for (pv = v[0], i = 1; i < n; i++) { for (zj = -1, j = 1; j < n; j++) { if (!a[v[j]] && (zj < 0 || w[j] > w[zj])) { zj = j; } } a[v[zj]] = 1; if (i == n - 1) { if (best > w[zj]) { best = w[zj]; } for (i = 0; i < n; i++) { g[v[i]][pv] = g[pv][v[i]] += g[v[zj]][v[i]]; } v[zj] = v[--n]; break; } pv = v[zj]; for (j = 1; j < n; j++) { if(!a[v[j]]) { w[j] += g[v[zj]][v[j]]; } } } } return best;}
0 0
- 无向图 最小割
- 无向图最小割
- 无向图最小割
- 无向图的最小割算法
- 【无向图求最小割集】
- xmu 1100无向图最小割
- poj 2914 无向图最小割
- 无向图最小割--poj2914
- 无向图最小割算法。
- 求无向图最小割
- POJ-2914-无向图最小割
- 无向图的最小割问题
- 无向图最小割的相关算法及其延伸
- POJ 2914 Minimum Cut //无向图求最小割
- poj 2914 Minimum Cut 无向图最小割
- Poj 2914 无向图的全局最小割
- POJ2914无向图最小割Stoer-Wagner算法
- poj 2914 无向图最小割 Stoer-Wagner算法
- 面向切面编程(AOP)的理解
- [LeetCode] 24. Swap Nodes in Pairs
- Git常见错误
- 35 第一个只出现一次的字符
- PAT乙级.1012. 数字分类 (20)
- 无向图最小割
- 【Leetcode】 83. Remove Duplicates from Sorted List 【两个指针】
- python的多线程基础设施
- HDU 2448 Mining Station on the Sea(floyd+KM)
- java网络编程
- 206. Reverse Linked List
- git快速入门(一)git环境配置
- Java个人理解之时间的使用
- LeetCode进阶之路(4Sum)