POJ.3281 dining 最大流+拆点
POJ.3281 dining
最大流+拆点
思路清晰为啥一直WA呢
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
#include <cstdio>
#define maxn 400
#define INF 0x3f3f3f3f
using namespace std;
int n,m,F,D,ss,tt;
vector <int> cow_f[maxn],cow_d[maxn];
vector <int> G[maxn];struct edge{int from,to,flow,cap;
};vector <edge> edges;
int cur[maxn],d[maxn],vist[maxn];void addedge(int from,int to,int cap){edges.push_back((edge){from,to,0,cap});edges.push_back((edge){to,from,0,0});int m=edges.size();G[from].push_back(m-2);G[to].push_back(m-1);
}void init(){edges.clear();for (int i=1;i<=maxn;i++){cow_d[i].clear();cow_f[i].clear();}for (int i=1;i<=maxn;i++) G[i]. clear();
}//int s=ss,t=tt;bool BFS(){memset(vist,0,sizeof(vist));queue <int> Q;Q.push(ss);vist[ss]=1;d[ss]=0;while (!Q.empty()){int x=Q.front();Q.pop();for(int i=0;i<G[x].size();i++) {edge &e=edges[G[x][i]];if (!vist[e.to] && e.cap>e.flow){vist[e.to]=1;d[e.to]=d[x]+1;Q.push(e.to);} }} return vist[tt];
}int dfs(int x,int a){if (x == tt || a == 0) return a;int flow=0,f;for (int &i=cur[x];i<G[x].size();i++){edge &e=edges[G[x][i]];if (d[e.to]==d[x]+1 && (f=(dfs(e.to,min(a,(e.cap-e.flow)))))>0){e.flow+=f;edges[G[x][i]^1].flow-=f;flow+=f;a-=f;if (a == 0) break;}}return flow;
}int maxflow(int ss,int tt){
// this->s=s; this->t=t;int flow=0;while (BFS()){memset(cur,0,sizeof(cur));flow+=dfs(ss,INF);}return flow;
}void read(){cin >> n >> F >> D;int m=0;init();for (int i=1;i<=n;i++) {int fi,di;cin >> fi >> di;m+=fi+di;for (int j=1;j<=fi;j++) {int ff;cin >> ff;cow_f[i].push_back(ff);}for (int j=1;j<=di;j++) {int dd;cin >> dd;cow_d[i].push_back(dd);}}
}void build(){ss=n*2+D+F+1;tt=ss+1;for (int i=1;i<=n;i++) addedge(i,i+n,1);for (int i=1;i<=F;i++) addedge(ss,n*2+i,1);for (int i=1;i<=D;i++) addedge(n*2+D+i,tt,1);for (int i=1;i<=n;i++){for (int j=0;j<cow_f[i].size();j++) addedge(n*2+cow_f[i][j],i,1);for (int j=0;j<cow_d[i].size();j++) addedge(i+n,n*2+F+cow_d[i][j],1);}}
void ddebug(){for (int i=0;i<edges.size();i++) cout << edges[i].from <<" "<< edges[i].to <<" "<< edges[i].cap << endl;}
int main (){//freopen("dining.in","r",stdin);//freopen("dining.out","w",stdout);//cin >> m >> n;//2*n+F+D+2read();build();//
// ddebug();int ans=maxflow(ss,tt);cout << ans;
}
POJ.3281 dining 最大流+拆点相关推荐
- POJ - 3281 Dining(最大流+思维建边)
题目链接:点击查看 题目大意:给出n头奶牛,f种食物,d种饮料,每只奶牛可以选择数种食物和饮料,但每种食物和饮料只有一份,现在问最多能让多少头奶牛同时满足食物和饮料的条件 题目分析:最大流的题目,不过 ...
- poj 3281 Dining 最大流
题目链接 一开始的想法就是food-cow-water,但是wa了,看了别人的思路知道每一只牛牛用一条边隔开,然后就达到了限流的效果. 所以 食物-->牛牛---->牛牛---->w ...
- 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)
B.POJ 3281 DiningDiningDining(最大流/建图模板)[省选/NOI- ] 有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料.现 ...
- POJ 3281 -- Dining(最大流,拆点建图)
题目链接 Description Cows are such finicky eaters. Each cow has a preference for certain foods and drink ...
- POJ 3281 (最大流+匹配+拆点)
题目链接:http://poj.org/problem?id=3281 题目大意:有一些牛,一堆食物,一堆饮料.一头牛要吃一份食物喝一份饮料才算满足,而且牛对某些食物和饮料才有好感,问最多有多少头牛是 ...
- B - Dining POJ - 3281 -网络流拆点模板
B - Dining POJ - 3281 题意:一些牛,每只牛有 一些 想吃的food and milk,然后问最大能够满足多少只牛. 满足是指的这头牛即能吃到他喜欢吃的又能喝到他喜欢喝的 思路: ...
- Dining(网络流,拆点, 最大流,详细注释)
题目 POJ - 3281 题意 n只牛,f种食物,d种食物,每只牛都有喜欢的食物和饮料,每头牛都有各自喜欢的食物和饮料,每种食物或饮料只能分配给一头牛.问最多能有多少头牛可以同时得到喜欢的食物和饮料 ...
- Poj 3281 Regional Chengdu Food(Dicnic)
网络流最大流的优化算法Dicnic,每一步对原图进行分层,然后用DFS求增广路.时间复杂度是O(n^2*m) . Poj 3281 和 9.16号成都regional网络赛food那道题,都是很好的模 ...
- 【POJ - 3281】Dining(拆点建图,网络流最大流)
题干: Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she wi ...
最新文章
- Python 切片的简单讲解
- Java基础 -- 复用类(组合和继承)
- 装配图中齿轮的画法_装配图的规定画法 和特殊画法
- Linux常用命令汇总及使用方法(二)之文本编辑器VI
- 乐刻发布新品牌LITTA 目前已拥有25万+线上付费用户
- python提取excel数据视频_Python-爬取b站的热门视频并导入Excel中
- 微课|中学生可以这样学Python(1.5节):标准库与扩展库对象的导入
- 开发小程序遇协同、平台兼容难题,该如何破局?
- Material Design学习之 Dialog(顺便把前两天AppBarLayout没讲的部分提一提)
- mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
- 搭建一个简单的Pascal脚本开发环境
- MAC如何烧录img文件或ios文件
- Canoe-14229-UDS自动化测试脚本CAPL 这适用于CANoe无diva的测试脚本
- 苹果手机连wifi很慢-解决方案
- 群体智能算法:细菌觅食算法
- php英文验证码,php 中英文验证码程序
- 奇异值分解的物理意义
- Android N 截图曝光,手机也能同屏多任务了!
- 常见的Http状态码以及其代表的意义
- Java删除StringBuilder最后一个逗号
热门文章
- 面试到了“IT大佬”,怼得我哑口无言…
- ios 高德挪动地图获取经纬度_IOS 地图移动中心点获取
- 华为在俄罗斯开设基于ARM技术的数据中心:技术之外,环境使然?
- y7000电池固件_y7000怎么刷电池固件|Surface Pro 3固件更新:电池续航问题终解决
- 韩国5G产品定价及营销策略剖析
- oracle 误删数据恢复
- 清华大学《大数据实践课》总结交流会成功举行
- 和平精英服务器维护多少钱,和平精英因充钱太多服务器崩溃?王小歪充52W,只用一小时...
- python自动汇总表格_用Python自动生成Excel报表
- pycharm中创建的dictionary与python package的区别