博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3281 Dining
阅读量:5805 次
发布时间:2019-06-18

本文共 1832 字,大约阅读时间需要 6 分钟。

题目:

网络最大流近似模板。

因为同时要有牛和食物和饮料才能满足,故把牛、食物、饮料串在一条链上即可。

然而自己却一开始忘记将牛拆成两个点,连一条容量为1的边!

这是为了限制“一头牛只能吃一份食物饮料”这个条件。因为一头牛可以喜欢多个食物饮料。

#include
#include
#include
#include
using namespace std;const int INF=105;int f,d,n,head[405],fi,di,x,xnt=1,cur[405],mxflow,t;int dfn[405];struct Edge{ int next,to,cap; Edge(int n=0,int t=0,int c=0):next(n),to(t),cap(c) {}}edge[40605];queue
q;void add(int a,int b){ edge[++xnt]=Edge(head[a],b,1);head[a]=xnt; edge[++xnt]=Edge(head[b],a,0);head[b]=xnt;}bool bfs(){ memset(dfn,0,sizeof dfn); while(q.size())q.pop(); dfn[0]=1;q.push(0); while(q.size()) { int k=q.front();q.pop(); for(int i=head[k],v;i;i=edge[i].next) if(!dfn[v=edge[i].to]&&edge[i].cap) { dfn[v]=dfn[k]+1; q.push(v); if(v==t)break; } } return dfn[t];}int dfs(int k,int flow){ if(k==t)return flow; int used=0; for(int& i=cur[k],v;i;i=edge[i].next) if(dfn[v=edge[i].to]==dfn[k]+1&&edge[i].cap) { int tmp=dfs(v,min(edge[i].cap,flow-used)); if(!tmp)dfn[v]=0; edge[i].cap-=tmp; edge[i^1].cap+=tmp; used+=tmp; if(used==flow)break; } return used;}int main(){ scanf("%d%d%d",&n,&f,&d); t=f+d+n+n+1; for(int i=1;i<=n;i++) { scanf("%d%d",&fi,&di); for(int j=1;j<=fi;j++) { scanf("%d",&x); add(x,i+f); } for(int j=1;j<=di;j++) { scanf("%d",&x); add(i+n+f,f+n+n+x); } } for(int i=1+f;i<=n+f;i++)add(i,i+n); for(int i=1;i<=f;i++)add(0,i); for(int i=n+n+f+1;i

 

转载于:https://www.cnblogs.com/Narh/p/8613633.html

你可能感兴趣的文章
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
Scrum之 Sprint计划会议
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
Spring MVC EL表达式不能显示
查看>>
Windwos Server 2008 R2 DHCP服务
查看>>
SAS和SATA硬盘的区别
查看>>
C# 矩阵作业
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
li下的ul----多级列表
查看>>
UVa 11292 勇者斗恶龙(The Dragon of Loowater)
查看>>