如果只有两个物品的话 是一个裸的二分图匹配问题

现在变成了三个物品之间的匹配 则只要在中间加一层节点表示书 再把这层的每个点拆成两个点中间连一条边限制流量 使其只能用一次

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define REP(i, a, b) for(register int i = (a), i##_end_ = (b); i <= i##_end_; ++ i)
#define DREP(i, a, b) for(register int i = (a), i##_end_ = (b); i >= i##_end_; -- i)
#define mem(a, b) memset((a), b, sizeof(a))
int read()
{
int sum = , fg = ; char c = getchar();
while(c < '' || c > '') { if (c == '-') fg = -; c = getchar(); }
while(c >= '' && c <= '') { sum = sum * + c - ''; c = getchar(); }
return sum * fg;
}
#define inf 0x3f3f3f3f
const int maxn = ;
int e,be[maxn], ne[maxn], to[maxn], c[maxn];
int nb, nex, na,m1,m2;
void add(int x, int y, int z)
{
to[e] = y, ne[e] = be[x], be[x] = e;
c[e] = z, e++;
to[e] = x, ne[e] = be[y], be[y] = e;
c[e] = , e++;
}
int d[maxn], end;
bool bfs()
{
queue<int>q;
memset(d,-,sizeof(d));
q.push(end),d[end] = ;
while(!q.empty())
{
int u = q.front(); q.pop();
for(int i = be[u]; i!=-; i = ne[i])
{
int v = to[i];
if(d[v] == - && c[i ^ ])
{
d[v] = d[u] + ;
q.push(v);
}
}
}
return d[]!=-;
}
int dfs(int x,int low)
{
if(x == end || !low)return low;
int ret = ;
for(int i = be[x]; i!=-;i = ne[i])
{
int v = to[i];
if(d[v] == d[x] - )
{
int k = dfs(v,min(low-ret,c[i]));
if(k > )
{
c[i] -= k;
c[i^] += k;
ret+=k;
}
}
}
return ret;
}
int dinic()
{
int ans = ;
while(bfs())
{
int k = dfs(,inf);
if(k>)ans+=k;
}
return ans;
}
int main()
{
memset(be,-,sizeof(be));
nb = read(); nex = read(); na = read();
m1 = read();
REP(i,,m1)
{
int x,y;
x = read(), y = read();
add(y,nex+x,);
}
m2 = read();
REP(i,,m2)
{
int x,y;
x = read(), y = read();
add(nex+nb+x,*nb+nex+y,);
}
end = *nb+nex+na+;
REP(i,,nex) add(,i,);
REP(i,,na) add(*nb+nex+i,end,);
REP(i,,nb) add(nex+i,nex+nb+i,);
printf("%d",dinic());
return ;
}

P1231 教辅的组成 拆点限流的更多相关文章

  1. 洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)

    题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...

  2. P1231 教辅的组成(最大流)

    P1231 教辅的组成 这个题一看便知是网络流量,(三分图??滑稽..) 就一个小细节,如果我们仅仅将所有的点分成三部分跑网络流的话会有点小问题.. 因为这可能导致一本书被重复利用,就是有两条流经过同 ...

  3. 图论--网络流--最大流--POJ 3281 Dining (超级源汇+限流建图+拆点建图)

    Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, an ...

  4. 洛谷——P1231 教辅的组成

    P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...

  5. 【解题报告】洛谷 P1231 教辅的组成

    [解题报告]洛谷 P1231 教辅的组成 题目链接 CSDN链接 这道题就只是一道普通的最大流问题,但是关键所在就是如何构图.要不是我看了题解,真的想不到这个构图方法呢 题目大意我就不写了,自己看好了 ...

  6. Luogu P1231 教辅的组成

    Luogu P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还 ...

  7. 洛谷 P1231 教辅的组成

    P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...

  8. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  9. 图论--网络流--最小割 HDU 2485 Destroying the bus stations(最短路+限流建图)

    Problem Description Gabiluso is one of the greatest spies in his country. Now he's trying to complet ...

随机推荐

  1. 配置zabbix监控windows,cmd运行报错cannot connect to Service Manager: [0x00000005]

    错误原因: cmd运行没有管理员权限 解决: 找到cmd.exe的位置C:\Windows\System32,选中--右键--使用管理员身份运行 再通过cmd进入到zabbix_agentd文件夹进行 ...

  2. 【Gstreamer开发】用 GStreamer 简化 Linux 多媒体开发

    原文:http://www.ibm.com/developerworks/cn/linux/l-gstreamer/ 一.基本概念 GStreamer 作为 GNOME 桌面环境推荐的流媒体应用框架, ...

  3. python初学第一节课

    ### python的基础 推荐学习python的一些资料, 首先就是书籍<Python从入门到实践>, 这本书评分很高, 主要是对Python讲解的比较清楚, 后面还有具体的实战项目 推 ...

  4. JS数据拷贝

    JS的拷贝可分为浅拷贝和深拷贝: 浅拷贝:如果数组元素是基本类型,就会拷贝一份,互不影响,而如果是对象或者数组,就会只拷贝对象和数组的引用,这样我们无论在新旧数组进行了修改,两者都会发生变化. 深拷贝 ...

  5. Photon Server 实现注册与登录(四) --- 服务端响应登陆和注册

    前面已经整理过了服务端代码,MyGameServer.cs 和 ClientPeer.cs 对请求和响应进行了拆分.接下来处理对前端的响应 一.响应登陆请求 之前整理中,响应前端请求主要在类Clien ...

  6. Django-djangorestframework-响应模块

    响应模块 一般都用 Response 对象来做返回(最后一定是打包成符合 HTTP 协议的数据格式来传输,Response 类做了一系列处理,所以这里我们只需要关注下它的那些参数即可) 响应类构造器 ...

  7. 10.使用du将文件按大小进行排序

    按G进行排序du -sh * | grep G | sort -nr

  8. Windows一键设置环境变量(以设置java环境变量为例)

    右击以管理员方式运行 JDKSetting.bat   @echo off color 0a echo.------------------------------------ echo.TODO:设 ...

  9. Go语言GOPATH详解(Go语言工作目录)

    GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录. 工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面.计算机及椅子就是你的 ...

  10. Skywalking的增强与拦截机制

    整理自架构经理(汤哥)的分享 字节增强条件匹配 在 skywalking 中实现很多基于 byte-buddy 的关于链式匹配查询的实现, 代码如下所示: public abstract class ...