传送门

圆桌聚餐

I think

增设源汇点S T,S向单位连容量为单位人数的边,每张桌子向T连容量为桌子容纳人数的边,每个人向每张桌子连容量为1的边,整张图的最大流==总人数时即有解。

Code

#include<cstdio>
#include<queue>
using namespace std;const int sm = 450+5;
const int sn = 82000;
const int Inf = 0x3f3f3f3f;int M,N,S,T,tot=1,Flw,sum; bool fl;
int to[sn],nxt[sn],hd[sm],c[sn];
int lev[sm],cur[sm];int Min(int x,int y) { return x<y?x:y; }
void Add(int u,int v,int w) {to[++tot]=v,nxt[tot]=hd[u],hd[u]=tot,c[tot]=w;to[++tot]=u,nxt[tot]=hd[v],hd[v]=tot,c[tot]=0;
}
bool Bfs() {queue<int>q; int t;for(int i=1;i<=T;++i) lev[i]=0;lev[S]=1,q.push(S);while(!q.empty()) {t=q.front(),q.pop();for(int i=hd[t];i;i=nxt[i])if(c[i]&&!lev[to[i]]) {lev[to[i]]=lev[t]+1;if(to[i]==T) return 1;q.push(to[i]);}}return 0;
}
int Dfs(int x,int mx) {if(x==T||!mx) return mx;int f;for(int i=cur[x]?cur[x]:hd[x];i;i=nxt[i]) {cur[x]=i;if(c[i]>0&&lev[to[i]]==lev[x]+1) {if(f=Dfs(to[i],Min(mx,c[i])))return c[i]-=f,c[i^1]+=f,f;}}return 0;
}
void Dinic() {int f;while(Bfs()) {for(int i=1;i<=T;++i) cur[i]=0;while(f=Dfs(S,Inf))Flw+=f;}
}       int main() {int u;scanf("%d%d",&M,&N);S=M+N+1,T=S+1;for(int i=1;i<=M;++i) {scanf("%d",&u);sum+=u;if(u>N) fl=1;if(!fl) Add(S,i,u);}for(int i=1;i<=N;++i) {scanf("%d",&u);if(!fl) Add(M+i,T,u);}if(fl) { puts("0");return 0; }for(int i=1;i<=M;++i)for(int j=M+1;j<=M+N;++j)Add(i,j,1);Dinic();if(Flw<sum) puts("0");else {puts("1");for(int i=1;i<=M;++i) {for(int j=hd[i];j;j=nxt[j])if(to[j]!=S&&!c[j]) printf("%d ",to[j]-M);putchar(10);}}return 0;
}

【网络流24题】圆桌聚餐(二分图)相关推荐

  1. 网络流24题 圆桌聚餐

    原题位置: http://cogs.sxysxy.org:8080/cogs/problem/problem.php?pid=729 (这个有SPJ) 这个题是一个裸的网络流板子题,都说网络流难在建图 ...

  2. [网络流24题]圆桌聚餐

    网络流大法好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...

  3. COGS 729 [网络流24题] 圆桌聚餐

    «问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...

  4. cogs729. [网络流24题] 圆桌聚餐

    «问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...

  5. [网络流24题] 圆桌聚餐

    从s向每个单位连一条容量为ri的边,从每个餐桌向汇点连一条容量为ci的边,每个单位与每个餐桌之间连一条容量为1的边,最大流即为答案. // q.c#include<iostream> #i ...

  6. COGS 729. [网络流24题] 圆桌聚餐

    «问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...

  7. [网络流24题]圆桌问题

    Description 假设有来自$n$个不同单位的代表参加一次国际会议.每个单位的代表数分别为$r_i(i\;\in\;[1,n])$.会议餐厅共有$m$张餐桌,每张餐桌可容纳$c_i(i\;\in ...

  8. LibreOJ 6004. 「网络流 24 题」圆桌聚餐 网络流版子题

    #6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...

  9. 【网络流24题】圆桌聚餐

    LOJ 6004 [网络流24题]圆桌聚餐 题面 假设有来自\(n\)个不同单位的代表参加一次国际会议.每个单位的代表数分别为\(r_i\).会议餐厅共有\(m\)张餐桌,每张餐桌可容纳\(c_i\) ...

  10. loj #6004. 「网络流 24 题」圆桌聚餐(最大流)

    #6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...

最新文章

  1. NR 5G 安全架构概述
  2. python3 打印对象的全部属性
  3. php session mysql_php session mysql存储
  4. notebook中安装lightgbm的gpu版本
  5. EFCore Lazy Loading + Inheritance = 干净的数据表 (一)
  6. config.cfg.php,PHP:使用给定的结构获取变量形式的config.cfg
  7. 百度终于升级空间的编辑器了
  8. 外部数据源的使用汇总
  9. 2015.12.20 自动化运维
  10. h5首页加载慢_Webview加载H5优化小记
  11. window强制删除文件bat
  12. Ubuntu引导文件丢失,grub修复(附加重装显卡驱动方法)
  13. OpenCV-RGB转HSV
  14. Go 语言入门系列:指针的基本应用
  15. java取万位的值,excel表格数值如何取万位整数,来研究下吧
  16. 图解 | 芯片总动员之”齐刘海“背后的秘密
  17. 计算机等级考试第一次报什么,计算机等级考试一年是考两次,3月和9月各一次 如果第一次没有考过第二次考要再报名缴费吗?...
  18. 在计算机中 汉字系统把一个汉字表示为,计算机问题汉字系统在计算机内把一个汉字表示 – 手机爱问...
  19. 磁场强度切向分量连续性证明
  20. error C1076: 编译器限制 : 达到内部堆限制;使用 /Zm 指定更高的限制

热门文章

  1. PBRT阅读:第一章 1.1文学编程(Literate Programming)
  2. SikuliX和Mobizen的andriod功能自动化测试
  3. C语言实现通讯录【一】(未优化)
  4. python实现简易五子棋小游戏代码实战
  5. 三星Galaxy S8打开USB调试
  6. win10 图片只显示一张预览图解决方法
  7. uefi能重置系统吗_uefi装系统的好处有哪些
  8. windows 系统鲜为人知的宝藏
  9. android 修改wifi信号强度
  10. [学习笔记] 在Mac 上安装SQL Server