//点标从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];
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;
}

最新文章

  1. ABP理论学习之通知系统
  2. JSON总结(java篇)
  3. CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍
  4. Objective-C 快速入门--基础(二)
  5. ThinkPad E440 Ubuntu 13.1无线网卡 RTL8723BE 驱动解决办法总结
  6. XAF应用开发教程(三)业务对象模型之引用类型与关联关系
  7. 两个ERP 库存调拨
  8. HDU 4123 Bob’s Race 树的直径 RMQ
  9. dom0级事件和dom2级事件
  10. jQuery中在当前页面弹出一个新的界面
  11. 对于crontab定时任务不能自动执行的总结
  12. C/C++(static)
  13. JavaScript 高性能数组去重
  14. 反射demo(拷贝一个对象)
  15. TCP/UDP 协议
  16. Python模块学习 - fabric
  17. [置顶] 单例模式lua实现
  18. GPU 显存释放
  19. FTP主动模式和被动模式的区别【转】
  20. nginx 启动重启脚本

热门文章

  1. UVa-1585-得分
  2. 07 mongodb
  3. Python之 七级字典查询
  4. 【7.1.1】ELK日志系统单体搭建
  5. Vim增强工具设置
  6. HDU 4418 高斯消元解决概率期望
  7. POJ 2777 Count Color【线段树】
  8. 洛谷P1771 方程的解_NOI导刊2010提高(01)
  9. 【BFS+优先级队列】Rescue
  10. hdu1160简单dp最长下降子序列