Solution

非常简单的建边!!!

但是刚开始的代码不够体现社会主义的优越性, 于是我 ....

惨痛教训啊。。。 终于到了今天才能够体现社会主义优越性。。。

Code

 #include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define rd read()
#define R register
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define per(i,a,b) for(register int i = (a); i >= (b); --i)
#define ll long long
using namespace std; const int N = 1e6 + 1e5, M = 4e3;
const int inf = ~0U >> ;
int n, m, head[M], tot, cur[M];
int dep[M], S, T;
int sum, ans; queue<int> q; struct edge {
int nxt, to, val;
}e[N * ]; inline int read() {
int X = , p = ; char c = getchar();
for(; c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} inline void added(int u, int v, int val) {
e[++tot].to = v;
e[tot].val = val;
e[tot].nxt = head[u];
head[u] = tot;
} inline void add(int u, int v, int val) {
added(u, v, val); added(v, u, );
} int ch(int x) {
return ((x + ) ^ ) - ;
} int bfs() {
rep(i, S, T) dep[i] = ;
dep[S] = ;
q.push(S);
for(R int u; !q.empty();) {
u = q.front(); q.pop();
for(R int i = head[u]; i; i = e[i].nxt) {
R int nt = e[i].to;
if(!dep[nt] && e[i].val) {
dep[nt] = dep[u] + ;
q.push(nt);
}
}
}
return dep[T];
} inline int minn(int A, int B) {
return A > B ? B : A;
} int dfs(R int u, R int flow) {
if(u == T || !flow) return flow;
if(!flow) return ;
R int re = ;
for(R int i = cur[u]; i && flow; i = e[i].nxt, cur[u] = i) {
R int nt = e[i].to;
if(dep[nt] != dep[u] + || !e[i].val) continue;
R int tmp = dfs(nt, minn(flow, e[i].val));
if(!tmp) continue;
re += tmp;
flow -= tmp;
e[i].val -= tmp;
e[i ^ ].val += tmp;
if(!flow) return re;
}
return re;
} int main()
{
n = rd; m = rd;
T = n + m + ;
tot = ;
rep(i, , n) {
R int cost = rd;
add(S, i, cost);
sum += cost;
int cnt = rd;
rep(j, , cnt) {
int x = rd, v = rd;
add(i, n + x, v);
}
}
rep(i, , m) {
R int x = rd;
add(i + n, T, x);
}
for(; bfs();) {
memcpy(cur, head, sizeof(head));
ans += dfs(S, inf);
}
printf("%d\n", sum - ans);
}

BZOJ 1391 [CEOI] Order - 网络流 最大流的更多相关文章

  1. Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1105  Solved: 331[Submit][Statu ...

  2. BZOJ 1391 [Ceoi2008]order

    1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...

  3. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

  4. bzoj 1391 [Ceoi2008]order(最小割)

    [题意] 有n个有偿工作选做,m个机器,完成一个工作需要若干个工序,完成每个工序需要一个机器,对于一个机器,在不同的工序有不同的租费,但买下来的费用只有一个.问最大获益. [思路] 对于工作和机器建点 ...

  5. POJ 1459-Power Network(网络流-最大流-ISAP)C++

    Power Network 时间限制: 1 Sec  内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...

  6. [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)

    题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...

  7. HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)

    HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...

  8. HDU1532 网络流最大流【EK算法】(模板题)

    <题目链接> 题目大意: 一个农夫他家的农田每次下雨都会被淹,所以这个农夫就修建了排水系统,还聪明的给每个排水管道设置了最大流量:首先输入两个数n,m ;n为排水管道的数量,m为节点的数量 ...

  9. Redraw Beautiful Drawings(hdu4888)网络流+最大流

    Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...

随机推荐

  1. java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #1) for method ApiService.getMethod

    @FormUrlEncoded @POST("getMethod") Observable<Bean> getMethod(String field); 今天在写Ret ...

  2. cakephp2.7的学习笔记1 —— 安装与配置

    CakePHP2.7的安装 下载 https://github.com/cakephp/cakephp/releases 解压后扔进你的www目录就可以直接访问 按照提示,修改这两项配置,替换成你喜欢 ...

  3. U3D组件------CharacterController(角色控制器)

    角色控制器中有碰撞体和刚体的属性 Slope Limit:角色能爬的斜坡的坡度限制 Step Offset:角色走台阶的高度 Skin Width:当场景里面出现多个角色控制器的时候,两个对象在接触的 ...

  4. JMeter学习(四)参数化(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现. 参数化:录制脚本中有登录操作,需要输入 ...

  5. 顺时针打印矩阵(python)

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  6. 使用ffmpeg从mp4文件中提取视频流到h264文件中

    ffmpeg -i 2018.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 tmp. 注释: -i 2018.mp4:  是输入的MP4文件 -code ...

  7. linux之基本命令讲解

    前言 [root@localhost python]# vim /root/.bashrc export PS1='\[\e[32;1m\][\u@\h \w \t]#\[\e[0m\] source ...

  8. Unity之Application.runInBackground = true

    默认是False, 设置 Application.runInBackground = true; 则 void OnApplicationPause(bool pause) 不再起作用

  9. nodemcu生成LUA版本固件

    构建自己的固件地址 https://nodemcu-build.com/

  10. 微信小程序接入百度统计

    一. 百度统计添加应用,获取appkey和微信小程序统计sdk: 1. 百度统计首页,点击“我的全部应用”右侧的添加按钮: 2. “应用类型”选择小程序统计,选择微信小程序,填写应用名称信息,选择内容 ...