hdu 4292 Food 网络流
给你f种食物, 以及每种食物的个数, d种饮料, 以及个数, n个人, 以及每个人可以接受的食物种类和饮料种类。 每个人必须得到一种食物和一种饮料。 问最后得到满足的人的个数。
因为一个人只能得到一种食物, 所以把人拆成两个点, 之间连一条权值为1的边。 建一个源点s, 汇点t, 每种食物向源点连边, 权值为食物的个数, 饮料向汇点连边, 权值为个数。 如果一个人可以接受某种饮料, u'就向饮料连一条权值为1的边; 如果一个人可以接受某种食物, 食物就向u连权值为1的边。
每次数组都要开的很大才可以过...........
- #include<bits/stdc++.h>
- using namespace std;
- #define pb(x) push_back(x)
- #define ll long long
- #define mk(x, y) make_pair(x, y)
- #define lson l, m, rt<<1
- #define mem(a) memset(a, 0, sizeof(a))
- #define rson m+1, r, rt<<1|1
- #define mem1(a) memset(a, -1, sizeof(a))
- #define mem2(a) memset(a, 0x3f, sizeof(a))
- #define rep(i, a, n) for(int i = a; i<n; i++)
- #define ull unsigned long long
- typedef pair<int, int> pll;
- const double PI = acos(-1.0);
- const double eps = 1e-;
- const int mod = 1e9+;
- const int inf = ;
- const int dir[][] = { {-, }, {, }, {, -}, {, } };
- const int maxn = 8e4+;
- int head[maxn*], s, t, num, q[maxn], dis[maxn];
- struct node
- {
- int to, nextt, c;
- }e[maxn*];
- void init() {
- mem1(head);
- num = ;
- }
- void add(int u, int v, int c) {
- e[num].to = v; e[num].nextt = head[u]; e[num].c = c; head[u] = num++;
- e[num].to = u; e[num].nextt = head[v]; e[num].c = ; head[v] = num++;
- }
- int bfs() {
- int u, v, st = , ed = ;
- mem(dis);
- dis[s] = ;
- q[ed++] = s;
- while(st<ed) {
- u = q[st++];
- for(int i = head[u]; ~i; i = e[i].nextt) {
- v = e[i].to;
- if(e[i].c&&!dis[v]) {
- dis[v] = dis[u]+;
- if(v == t)
- return ;
- q[ed++] = v;
- }
- }
- }
- return ;
- }
- int dfs(int u, int limit) {
- if(u == t)
- return limit;
- int cost = ;
- for(int i = head[u]; ~i; i = e[i].nextt) {
- int v = e[i].to;
- if(e[i].c&&dis[u] == dis[v]-) {
- int tmp = dfs(v, min(limit-cost, e[i].c));
- if(tmp>) {
- e[i].c -= tmp;
- e[i^].c += tmp;
- cost += tmp;
- if(cost == limit)
- break;
- } else {
- dis[v] = -;
- }
- }
- }
- return cost;
- }
- int dinic() {
- int ans = ;
- while(bfs()) {
- ans += dfs(s, inf);
- }
- return ans;
- }
- char c[];
- int main()
- {
- int n, f, d, x;
- while(cin>>n>>f>>d) {
- init();
- s = , t = f+*n+d+;
- for(int i = ; i<=f; i++) {
- scanf("%d", &x);
- add(s, i, x);
- }
- for(int i = ; i<=d; i++) {
- scanf("%d", &x);
- add(f+*n+i, t, x);
- }
- for(int k = ; k<; k++) {
- for(int i = ; i<=n; i++) {
- scanf("%s", c);
- int len = strlen(c);
- for(int j = ; j<len; j++) {
- if(c[j]=='Y') {
- if(k==) {
- add(j+, f+i, );
- } else {
- add(f+n+i, j++f+*n, );
- }
- }
- }
- }
- }
- for(int i = ; i<=n; i++) {
- add(i+f, i+n+f, );
- }
- int ans = dinic();
- cout<<ans<<endl;
- }
- }
hdu 4292 Food 网络流的更多相关文章
- HDU 4292 Food (网络流,最大流)
HDU 4292 Food (网络流,最大流) Description You, a part-time dining service worker in your college's dining ...
- Food HDU - 4292 网络流 拆点建图
http://acm.hdu.edu.cn/showproblem.php?pid=4292 给一些人想要的食物和饮料,和你拥有的数量,问最多多少人可以同时获得一份食物和一份饮料 写的时候一共用了2种 ...
- (网络流)Food -- hdu -- 4292
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4292 Food Time Limit: 2000/1000 MS (Java/Others) Me ...
- H - Food HDU - 4292 网络流
题目 You, a part-time dining service worker in your college’s dining hall, are now confused with a n ...
- HDU 4292:Food(最大流)
http://acm.hdu.edu.cn/showproblem.php?pid=4292 题意:和奶牛一题差不多,只不过每种食物可以有多种. 思路:因为食物多种,所以源点和汇点的容量要改下.还有D ...
- hdu 2883 kebab 网络流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2883 Almost everyone likes kebabs nowadays (Here a ke ...
- hdu 1733 分层网络流 ****
题目大意:有一个类似于迷宫搜索的图,‘.’代表的是无人的路,'X'代表有人的点,'#'代表此点不可通过,'@'代表门口.每个位置每一秒钟只能站一个人,每个位置到上下左右点的时间为1,问你所有人能不能出 ...
- HDU 3452 Bonsai(网络流之最小割)
题目地址:HDU 3452 最小割水题. 源点为根节点.再另设一汇点,汇点与叶子连边. 对叶子结点的推断是看度数是否为1. 代码例如以下: #include <iostream> #inc ...
- hdu 3572 Escape 网络流
题目链接 给一个n*m的图, 里面有一些点, '.'代表空地, '#'代表墙, 不可以走, '@'代表大门, 可以有多个, 'X'代表人, 问所有人都走出大门需要的最短时间, 每一时刻一个格子只能有一 ...
随机推荐
- jQuery源码笔记——三
将类数组对象转化为数组对象 javascript中有许多类数组对象,比如HTMLCollection,NodeList,arguments.她们的特点是和数组一样有length属性,并且有0,1,2这 ...
- Programming C#.Classes and Objects.只读字段
只读字段 当字段声明中含有 readonly 修饰符时,该声明所引入的字段为只读字段.给只读字段的直接赋值只能作为声明的组成部分出现,或在同一类中的实例构造函数或静态构造函数中出现.(在这些上下文中, ...
- style-11bak
<resources> <style name="FullscreenTheme" parent="android:Theme.Holo"&g ...
- PHP利用递归法获取多级类别的树状数组
数据结构:category(id, pid, name),对应:信息ID,父项ID,类别名 测试数据: $aryCate = array( array('id' => 1, 'pid' => ...
- sqlserver 分页sql语句
select * from (select *,row_number() over(order by CONTENT_ID ) as rnum from ArchiveContents) t whe ...
- [原]基于CAS实现单点登录(SSO):cas client端的退出问题
自从CAS 3.4就很好的支持了单点注销功能,配置也很简单. 之前版本因为在CAS服务器通过HttpClient发送消息时并未指定为POST方式,所以在CAS客户端的注销Filter中没有收到POST ...
- css Block formatting context BFC
w3c关于BFC解释: http://www.w3.org/TR/CSS21/visuren.html#block-formatting Mdn描述: A block formatting conte ...
- 奇怪的haproxy 跳转
<pre name="code" class="html">奇怪的Haproxy 跳转: acl admin_req path_beg -i /ad ...
- favicon
<link rel="icon" href="Images/wangyi.ico" type="text/plain" />
- Android开发10.3:UI组件GridView网格视图
GridView(网格视图) 概述 GridView用于在界面上按行.列分布的方式来显示多个组件 GridView和ListView有共同的父类 : AbsListView ...