Nubulsa Expo. 全局最小割
来源:互联网 发布:矩阵向量化公式 编辑:程序博客网 时间:2024/06/05 10:14
#include <bits/stdc++.h>//点标从0-n-1, 开始时先init 复杂度n^3//对于边(u,v,flow)://g[u][v]+=flow;//g[v][u]+=flow;typedef long long ll;const int N = 305;const ll inf = 1e18;ll g[N][N], w[N];int a[N], v[N], na[N];void add_edge(int u , int v , int flow){ g[u][v] += flow ; g[v][u] += flow ;}ll mincut(int n) {int i, j, pv, zj;ll best = inf;for(i = 0; i < n; i ++) v[i] = i;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;}void init(int n){ for(int i = 0; i < n; i ++) for(int j = 0; j < n; j ++) g[i][j] = g[j][i] = 0;}int main(){ int n , m , st ; while( ~ scanf("%d %d %d" , & n , & m , & st )) { if(!n && !n && !st) break ; init(n) ; int a , b , c; for(int i = 0 ; i < m ; i ++ ){ scanf("%d %d %d" , &a , &b , &c) ; add_edge(a - 1 , b - 1 , c) ; } printf("%lld\n" , mincut(n)) ; } return 0 ;}
阅读全文
0 0
- Nubulsa Expo. 全局最小割
- HDU 3691 Nubulsa Expo (全局最小割)
- POJ 3691 Nubulsa Expo 全局最小割
- HDU 3691 Nubulsa Expo(全局最小割Stoer_Wagn)
- HDU 3691 Nubulsa Expo(全局最小割)
- HDU 3691 Nubulsa Expo(全局最小割)(10福州B题)#by zh
- UVALive 5099 Nubulsa Expo 全局最小割 非网络流 n^3
- Stoer-Wagner无向图全局最小割(hduoj 3691 Nubulsa Expo)
- HDU 3691 Nubulsa Expo(SW算法求最小割)
- Hdu 3691 Nubulsa Expo(无向图最小割)
- HDU 3691 Nubulsa Expo
- HDU 3691 Nubulsa Expo
- hdu3691Nubulsa Expo(Stoer-Wagner求无向图全局最小割)
- 全局最小割
- 全局最小割
- poj2914 全局最小割
- 全局最小割模板
- 全局最小割
- Android动画 —— Activity过渡
- 2107年10月15日训练笔记
- 如何解决网站大规模并发访问带来的性能下降问题
- 利用C++编程语音判断闰年
- 训练日记-30
- Nubulsa Expo. 全局最小割
- ElasticSearch 倒排索引、分词
- 安卓属性动画
- 数据结构实验之栈与队列十一:refresh的停车场
- LeetCode89 Gray Code
- 剑指offer系列(2)——二维数组中的查找
- 训练总结 10.15
- 【安全牛学习笔记】Smurf攻击、Sockstress
- java继承练习(java 第四周)