洛谷 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 (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的.松耦合的.可协同工作的独立逻辑业务服务会更易于构建和维护.这 ...
- vue3生命周期
介绍 vue3的生命周期函数,可以按需导入到组件中,且只能在 setup() 函数中使用 示例 import { onMounted, onUpdated } from '@vue/compositi ...
- java8之lambda表达式(默认方法)
[推荐]2019 Java 开发者跳槽指南.pdf(吐血整理)>>> 许多开发语言都将函数表达式集成到了其集合库中.这样比循环方式所需的代码更少,并且更加容易理解.以下面的循环为例: ...
- C# vb .net实现高斯模糊
在.net中,如何简单快捷地实现Photoshop滤镜组中的高斯模糊效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- 【JavaWEB SSH】jsp页面传值后台Controller 部分值绑定不上实体类
//前端ajax代码 1 var oldpassword = $('#old_password').val(); var password = $('#L_pass').val(); var user ...
- 原生JS-----一个剪刀石头布游戏
html: <h1>这是一个剪刀石头布游戏</h1> <h2>请出拳吧!少年!</h2> <h3>您已经获胜了<span id=&qu ...
- JavaScript HTML DOM元素节点常用操作接口
在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType :节点的类 ...
- Android Room 使用案例
本内容主要介绍 Android 中使用 Room 保存数据到本地数据库的方法. 以下是 Android Room 的官方介绍文档: Room Persistence Library(Room 库的简 ...
- 蓝牙 BLE 三种 UUID 格式转换
蓝牙广播中对服务 UUID 格式定义都有三种 16 bit UUID.32 bit UUID.128 bit UUID. 但是熟悉安卓开发的小伙伴都知道接口都 UUID 格式,fromString 时 ...
- 腿部——哑铃&杠铃