洛谷 P1231教辅的组成
/*
s->练习册(1~b)->书(b+1~a+b)->答案(a+b+1~a+b+c)->t
但是可能会有多本练习册指向同一本书,这本书又可能会指向多本答案
这样每本书对答案的贡献就不只是1了,所以考虑对书进行拆点
s->练习册(1~b)->书(b+1~a+b)->(a+b+a~a+a+b)->答案(a+a+b+1~a+a+b+c)->t
*/
#include<iostream>
#include<cstdio>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=1e5+;
struct node{
int v,f,nxt;
}e[N*];
int m,a,b,c,Enum=,ans,t;
int front[N],cur[N],deep[N];
int q[N];
int qread()
{
int x=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
void Insert(int u,int v)
{
e[++Enum].v=v;
e[Enum].f=;
e[Enum].nxt=front[u];
front[u]=Enum;
e[++Enum].v=u;
e[Enum].nxt=front[v];
front[v]=Enum;
}
bool bfs()
{
for(int i=;i<=t;i++)
{
deep[i]=;
cur[i]=front[i];
}
int head=,tail=;
deep[]=;
q[++tail]=;
int u;
while(head<=tail)
{
u=q[head++];
for(int i=front[u];i;i=e[i].nxt)
if(e[i].f && !deep[e[i].v])
{
deep[e[i].v]=deep[u]+;
if(e[i].v==t)
return ;
q[++tail]=e[i].v;
}
}
return ;
}
int dfs(int now,int cur_flow)
{
if(now==t)return cur_flow;
int rest=cur_flow,v;
for(int &i=cur[now];i;i=e[i].nxt)
{
v=e[i].v;
if(e[i].f && deep[v]==deep[now]+ && rest)
{
int new_flow=dfs(v,min(e[i].f,rest));
e[i].f-=new_flow;
e[i^].f+=new_flow;
rest-=new_flow;
if(!rest)return cur_flow;
}
}
deep[now]=;
return cur_flow-rest;
}
void Dinic()
{
while(bfs())
ans+=dfs(,INF);
printf("%d\n",ans);
}
int main()
{
scanf("%d%d%d",&a,&b,&c);
t=a+a+b+c+;
for(int i=;i<=b;i++)
Insert(,i);
for(int i=;i<=a;i++)
Insert(i+b,i+a+b);
for(int i=;i<=c;i++)
Insert(i+a+a+b,t);
scanf("%d",&m);
int u,v;
for(int i=;i<=m;i++)
{
u=qread();v=qread();
Insert(v,u+b);
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
u=qread();v=qread();
Insert(u+a+b,v+a+a+b);
}
Dinic();
return ;
}
洛谷 P1231教辅的组成的更多相关文章
- 【解题报告】洛谷 P1231 教辅的组成
[解题报告]洛谷 P1231 教辅的组成 题目链接 CSDN链接 这道题就只是一道普通的最大流问题,但是关键所在就是如何构图.要不是我看了题解,真的想不到这个构图方法呢 题目大意我就不写了,自己看好了 ...
- 洛谷 P1231 教辅的组成
P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...
- 洛谷——P1231 教辅的组成
P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...
- 洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
- [洛谷P1231] 教辅的组成
题目大意:有n1本书,n2本练习册和n3个答案,然后又一些条件,说明某本答案可能和某本书对应,某本练习册可能和某本书对应,求最多有多少本完整的书(有书,练习册,答案) 题解:网络流,对应就连边,然后考 ...
- 洛谷P1231 教辅的组成 最大流
裸题… Code: #include<cstdio> #include<cstring> #include<algorithm> #include<vecto ...
- 洛谷P1231 教辅的组成 网络流
Code: #include<cstdio> #include<cstring> #include<algorithm> #include<vector> ...
- 「洛谷P1231」教辅的组成 解题报告
P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...
- AC日记——教辅的组成 洛谷 P1231
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
随机推荐
- 如何将 Redis 用于微服务通信的事件存储
来源:Redislabs作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的.松耦合的.可协同工作的独立逻辑业务服务会更易于构建和维护.这 ...
- 使用Identity Server 4建立Authorization Server
使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端 摘要: 预备知识: http://www.cnblogs.com/cg ...
- c# 基于RTMP推流 PC+移动端 拉流播放
网上关于直播相关的文章很多,但是讲解还是不够系统,对于刚刚接触直播开发的朋友实施起来会浪费不少时间.下面结合我自己的经验, 介绍一下直播方面的实战经验. 分成两个部分 第一部分是标题中介绍的基于RTM ...
- ②将SVN迁移到GitLab-多分支多标签迁移
之前我们介绍了<①将SVN迁移到GitLab-单分支迁移>,文中研究了svn迁移到git单分支的操作过程,本文针对实际开发过程中svn使用到的trunk.branches.tags情况进行 ...
- ADO.NET 六(DataRow DataColumn)
已经介绍了使用 SqlCommand 对象中的 ExecuteNonQuery 方法执行非查询 SQL 语句来实现对数据表的更新操作,使用 DataSet 对象也能实现相同的功能, 并且能节省数据访问 ...
- 14.1 Scroll说明和注意事项
使用scroll滚动搜索: 比如全文搜索10万条数据,不能一次全搜出来返回,太耗时了.通常是一批一批的获取结果,滚动搜索 1. 第一次搜索时,会生成这批数据的快照,下次再搜的时候,基于此快照进 ...
- .net 调用存储过程
语言:C# 一.调用带输入参数的存储过程 首先自然是在查询分析器里创建一个存储过程喽~~ 如下所示: create proc proc_1 @uid int, @pwd varchar(255) ...
- commonjs 与 es6相关Module语法的区别
1.export 在接口名字与模块内部的变量之间建立了一一对应的关系,export输出的接口,与其模块内对应的变量值是动态绑定的,即通过暴露的接口可以取到模块内与之对应绑定变量的实时的值. commo ...
- Github的fork进行同步
最近项目要求每个开发人员都有自己fork,需要在自己的fork下进行开发.这样就涉及的到fork和原仓库的同步问题. 在网上查找到fork和原仓库同步的方法,如下转载自网上查找的内容,使用终端命令行进 ...
- springboot学习入门简易版七---springboot2.0使用@Async异步执行方法(17)
1启动类开启异步调用注解 @SpringBootApplication @EnableAsync //开启异步调用 public class StartApplication { 不开启则异步调用无效 ...