洛谷 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在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
随机推荐
- tkinter学习笔记_02
4. 多行输入框 text # 按钮 # command 执行动作 def insert_point(): var = e.get() t.insert('insert', var) b = tk.B ...
- [高清] Java从入门到精通第3版
------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...
- ubuntu 16.04 循环登陆问题
换了个titan x重装显卡驱动失败之后一直循环登陆,试了N种处理显卡驱动的方法,并没有啥用. 最后查看了一下.Xerrer文件(具体的文件名我给忘记了),发现是.Xauthority. 现象:在Ub ...
- IDEA使用@Data注解,类调用get、set方法标红的解决办法
1.在setting中,下载lombok插件,安装完成后重启idea
- spring 通过启动命令配置文件路径
公司使用dubbo开发,提供了很多的服务,每个服务中一些配置都是一样的,比如注册中心地址,公共码表库等一下配置,这样在部署每一个程序的时候,修改每一个服务的配置增加很多的工作量.且领导不想对程序有大的 ...
- .net core使用ocelot---第八篇 Consul
简介 .net core使用ocelot---第一篇 简单使用 .net core使用ocelot---第二篇 身份验证使用 .net core使用ocelot---第三篇 日志记录 .net ...
- 将H5页面打包成安卓原生app
第一步:下载HBuilderX,新建项目选择5+App新建一个空项目如下图 新建后项目目录结构如下图 第二步,将你要打包成安卓app的文件打包,最后生成的文件目录如下图 1.打包完成后,将对应文件内容 ...
- Flask初识之安装及HelloWord程序
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...
- paroot忘记root密码
打开虚拟机在倒计时进入系统前按下e键然后按照下图修改即可 crtl+x重启 mount –rw –o remount /保证磁盘可读写 然后执行passwd
- DRF 筛选
from rest_framework.generics import ListAPIView,CreateAPIView,UpdateAPIView,RetrieveAPIView,DestroyA ...