#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cstdio>
#include <vector> using namespace std; const int N = + ;
const int oo = 0x3f3f3f3f; struct Edge {
int from, to, cap, flow;
}; struct Dinic {
int n, m, s, t;
int dis[N], cur[N], que[N << ];
bool vis[N];
vector <Edge> edges;
vector <int> G[N]; void add(int from, int to, int cap) {
edges.push_back((Edge) {from, to, cap, });
edges.push_back((Edge) {to, from, , });
m = edges.size();
G[from].push_back(m - );
G[to].push_back(m - );
} bool bfs() {
int head = , tail = ; memset(vis, false, sizeof vis);
dis[s] = ; vis[s] = true; que[head] = s;
while(head <= tail) {
int x = que[head]; for(int i = ; i < (signed) G[x].size(); ++ i) {
Edge &e = edges[G[x][i]]; if(!vis[e.to] && e.cap > e.flow) {
vis[e.to] = true;
dis[e.to] = dis[x] + ;
que[++ tail] = e.to;
}
}
++ head;
}
return vis[t];
} int dfs(int x, int a) {
if(x == t || a == ) return a; int flw = , f; for(int &i = cur[x]; i < (signed) G[x].size(); ++ i) {
Edge &e = edges[G[x][i]]; if(dis[e.to] == dis[x] + && (f = dfs(e.to, min(a, e.cap - e.flow))) > ) {
e.flow += f; edges[G[x][i] ^ ].flow -= f; flw += f; a -= f;
if(a == ) break;
}
}
return flw;
} int MaxFlow(int s, int t) {
this->s = s; this->t = t; int flw = ; while(bfs()) {
memset(cur, , sizeof cur);
flw += dfs(s, oo);
}
return flw;
}
}net; int n, M[N]; int main() {
#ifndef ONLINE_JUDGE
freopen("maxflowb.in", "r", stdin);
freopen("maxflowb.out", "w", stdout);
#endif int Up, Down; scanf("%d", &n); net.n = n + ;
for(int i = ; i <= n; ++ i) {
for(int j = ; j <= n; ++ j) {
scanf("%d%d", &Down, &Up);
M[i] -= Down; M[j] += Down;
net.add(i, j, Up - Down);
}
}
net.add(n, , oo);
for(int i = ; i <= n; ++ i) {
if(M[i] > ) {
net.add(, i, M[i]);
}
else if(M[i] < ){
net.add(i, n + , -M[i]);
}
}
net.MaxFlow(, n + );
printf("%d\n", net.MaxFlow(, n)); #ifndef ONLINE_JUDGE
fclose(stdin); fclose(stdout);
#endif
return ;
}

Cogs 12

连边方式见图。

最新文章

  1. 【视频处理】YUV与RGB格式转换
  2. 初识Message Queue之--基础篇
  3. EF和MVC系列文章导航:EF Code First、DbContext、MVC
  4. CentOS7 最小化安装后启用无线连接网络
  5. [工作积累] android 中添加libssl和libcurl
  6. poj 3621 0/1分数规划求最优比率生成环
  7. HDU4607 - Park Visit(树的直径)
  8. Scala的安装(本地)
  9. osg for android (一) 简单几何物体的加载与显示
  10. 《python基础教程》笔记之 基础知识
  11. Unix/Linux环境C编程入门教程(33) 命令和鼠标管理用户和组
  12. 达内TTS6.0课件oop_day02
  13. Android项目外接高德地图代码混淆注意事项
  14. Stub和Mock的理解
  15. 【锋利的Jquery】读书笔记二
  16. C++图形编程之graphics.h头文件
  17. Jmeter学习笔记03-元件作用域及执行顺序
  18. Linux网络编程学习(十二) ----- 结语
  19. babel-preset-env使用指南
  20. Oracle中连接与加号(+)的使用

热门文章

  1. UVA 10037 贪心算法
  2. poj2187 Beauty Contest(旋转卡壳)
  3. 在Web开发方面Java跟PHp八大对比
  4. 解决APP中fragment重叠问题
  5. PHP学习系列(1)——字符串处理函数(1)
  6. Java并发编程--线程封闭(Ad-hoc封闭 栈封闭 ThreadLocal)
  7. 关于mobiscroll插件的使用
  8. BZOJ 2732 射箭
  9. Struct2(五)处理表单
  10. c#秒转时分秒