P1231 教辅的组成 拆点限流
如果只有两个物品的话 是一个裸的二分图匹配问题
现在变成了三个物品之间的匹配 则只要在中间加一层节点表示书 再把这层的每个点拆成两个点中间连一条边限制流量 使其只能用一次

#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 教辅的组成 拆点限流的更多相关文章
- 洛谷 P1231 教辅的组成(网络最大流+拆点加源加汇)
题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书 ...
- P1231 教辅的组成(最大流)
P1231 教辅的组成 这个题一看便知是网络流量,(三分图??滑稽..) 就一个小细节,如果我们仅仅将所有的点分成三部分跑网络流的话会有点小问题.. 因为这可能导致一本书被重复利用,就是有两条流经过同 ...
- 图论--网络流--最大流--POJ 3281 Dining (超级源汇+限流建图+拆点建图)
Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, an ...
- 洛谷——P1231 教辅的组成
P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...
- 【解题报告】洛谷 P1231 教辅的组成
[解题报告]洛谷 P1231 教辅的组成 题目链接 CSDN链接 这道题就只是一道普通的最大流问题,但是关键所在就是如何构图.要不是我看了题解,真的想不到这个构图方法呢 题目大意我就不写了,自己看好了 ...
- Luogu P1231 教辅的组成
Luogu P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还 ...
- 洛谷 P1231 教辅的组成
P1231 教辅的组成 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- 图论--网络流--最小割 HDU 2485 Destroying the bus stations(最短路+限流建图)
Problem Description Gabiluso is one of the greatest spies in his country. Now he's trying to complet ...
随机推荐
- [非原创]Office 2019 增强版 批处理激活 亲测成功
忘了原创网址了,在 https://www.52pojie.cn/ 上看到的,这里我备忘一下,希望知道原创网址的朋友告诉我一下,谢谢! 将下面批处理脚本存成.bat文件后,以管理员方式运行: @ech ...
- vulstudy
vulstudy是专门收集当下流行的漏洞学习平台,并将其制作成docker镜像,方便大家快速搭建环境,节省搭建时间,专注于的漏洞学习上.目前vulstudy包含以下漏洞学习平台: 序号 漏洞平台 包含 ...
- 【编程开发】非对称加密过程详解(基于RSA非对称加密算法实现)
1.非对称加密过程: 假如现实世界中存在A和B进行通讯,为了实现在非安全的通讯通道上实现信息的保密性.完整性.可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体 ...
- 自己对flash memory的总结
1.综述类文章 1.A Survey of Storage Management in Flash based Data 2.Understanding the Flash Translation L ...
- golang 二维切片
初始化: res := make([][length]int, length), 例如: res := make([][2]int, 10) fmt.Println(res) 输出: [[0 0] [ ...
- Windows远程连接server(Linux系统)及可视化
方法1:命令行连接后使用server上安装好的可视化编辑器IDE: Step 1: 工具准备:putty.exe:Xming-6-9-0-31-setup.exe:Xming-fonts-7-7-0- ...
- SQL0668N Operation not allowed for reason code "3" on table "TEST". SQLSTATE=57016
问题描述: 查询,操作表都报如下错误 SQL0668N Operation not allowed for reason code "3" on table "TEST ...
- java日志框架系列(3):logback框架配置详解
1.Logback配置 1.配置步骤及默认配置 logback即可以通过编程式配置,也可以通过xml的形式配置. logback配置步骤: 1. 尝试在 classpath 下查找文件 logback ...
- MyBatis学习存档(3)——mapper.xml映射文件
MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单 所以我们来看看映射文件的具体结构 一.xml节点结构 mapper为根节点 - namespace命名空间 ...
- Wannafly挑战赛22
B. 字符路径 给一个含n个点m条边的有向无环图(允许重边,点用1到n的整数表示),每条边上有一个字符,问图上有几条路径满足路径上经过的边上的字符组成的的字符串去掉空格后以大写字母开头,句号 '.' ...