原题位置: http://cogs.sxysxy.org:8080/cogs/problem/problem.php?pid=729

(这个有SPJ)

这个题是一个裸的网络流板子题,都说网络流难在建图,我只能说+1;

这个题的建图方式有两种,但大同小异;

<1> 超级源,超级汇,拆点,拆出的两个点之间为代表数(桌子数),代表和桌子之间的边是1,超级源(汇)与代表(桌子)之间是正无穷;
<2> 超级源,超级汇,超级源(汇)与代表(桌子)之间是代表数(桌子数),代表与桌子之间是1;

(我用的是<1>)

然后跑最大流了,如果最大流等于代表数的话,即所有代表都可以合法的找到桌子,即输出1,否则输出0;

这题描述不清,输出0的话就可以exit(0)了;

至于这道题的一个点就是输出路径(??!路径??!);

就看如果代表和桌子之间的正向边没流量的话,证明该代表选了这张桌子,然后输出就好了;

要是WA了,就开大点数组,然后找个有SPJ的网站,如果还没A,就自行debug吧;

—————————————123——————————————-

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
#define II int
#define B bool
#define R register
#define I 1000
using namespace std;struct node {II from,to;II flow;
};vector <node> Q;vector <II> aa[I*I];II dis[I], bit[I], kl[I][I], peo[I], tab[I];II n,m,ans,en,_tot;void add(R II x,R II y,R II z)
{Q.push_back((node) {x,y,z});aa[x].push_back(Q.size()-1);Q.push_back((node) {y,x,0});aa[y].push_back(Q.size()-1);
}B bfs()
{queue <II> op;op.push(0);dis[0]=1;while (!op.empty()) {II o=op.front(); op.pop();for(R II i=0;i<aa[o].size();i++){R node now=Q[aa[o][i]];R II go=now.to;if(!dis[go]&&now.flow) {dis[go]=dis[o]+1;op.push(go);}}}return dis[en];
}II dfs(R II x,R II a)
{R II f=0,now_flow=0;if(!a||x==en) return a;for(R II& i=bit[x];i<aa[x].size();i++){R node& now=Q[aa[x][i]];R II go=now.to;if(dis[go]==dis[x]+1&&(f=dfs(go,min(a,now.flow)))>0) {now_flow+=f;Q[aa[x][i]].flow-=f;a-=f;Q[aa[x][i]^1].flow+=f;if(!a) return now_flow;}}return now_flow;
}int main()
{freopen("roundtable.in","r",stdin);freopen("roundtable.out","w",stdout);
//  freopen("1.in","r",stdin);scanf("%d%d",&n,&m);for(R II i=1;i<=n;i++) scanf("%d",&peo[i]), _tot+=peo[i];for(R II i=1;i<=m;i++) scanf("%d",&tab[i]);en=n+n+m+m+1;for(R II i=1;i<=n;i++) add(0,i,123456789);for(R II i=n+n+m+1;i<=n+n+m+m;i++) add(i,en,123456789);for(R II i=1;i<=n;i++) add(i,n+i,peo[i]);for(R II i=n+n+1;i<=n+n+m;i++) add(i,m+i,tab[i-n-n]);for(R II i=n+1;i<=n+n;i++){for(R II j=n+n+1;j<=n+n+m;j++) add(i,j,1);}while (bfs()) {for(R II i=0;i<=en;i++) bit[i]=0;ans+=dfs(0,123456789);for(R II i=0;i<=en;i++) dis[i]=0;}ans==_tot? printf("1\n"): printf("0\n");if(ans==_tot) {for(R II i=n+1;i<=n+n;i++){for(R II j=0;j<aa[i].size();j++){if(!Q[aa[i][j]].flow) printf("%d ",Q[aa[i][j]].to-n-n);// 找路径,如果该正向边没流量的话,输出;}printf("\n");}}exit(0);
} 

————————————–456———————————————

by pretend-fal

END;

网络流24题 圆桌聚餐相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 史上最全的长读长数据校错方法大比拼
  2. python实现表格合并_Python实现合并excel表格的方法分析
  3. 前端学习(2821):windows上配置tabber字段
  4. esxi usb插口_酷暑大作战 | USB-C风扇新体验
  5. python转换窗口无响应_Tkinter窗口显示(没有响应),但代码正在运行
  6. ros-Qt代码环境的搭建
  7. Oracle的10046事件
  8. 英国电信移除华为设备后,多家运营商继续与华为合作,并达成20亿英镑协议...
  9. zen服务器芯片,Intel颤抖!AMD 32核心终极版Zen亮相:媲美人脑
  10. 离散数学 习题篇 —— 最小生成树
  11. python控制电脑音量,声音之控制音量,,
  12. OPPO K9 Pro刷root强解锁BL刷面具Magisk框架 oppo k9pro root教程
  13. Python3对股票数据进行分析
  14. 开年工作重点:帮助同事找到工作的价值
  15. 百度大脑通用物体识别使用攻略
  16. 硬件设计之DDS AD9854
  17. 什么是交互设计,为什么要进行交互设计
  18. 工业交换机的单模多模是什么意思?
  19. 阿里云服务器后台运行服务
  20. 熵(entropy)的定义

热门文章

  1. FlowJo 10.8.1 WIN版本丨英文 软件安装包下载 安装教程步骤丨WIN系统
  2. 【植树节专题】回顾TcaplusDB的十年发展史
  3. 记第一次Python爬虫-----五块五毛网站小说
  4. cocos2dx RenderTexture 用法
  5. 身份证实名认证api
  6. javawebJAVAJSP网上租房系统JSP房屋租赁系统JSP房产信息网站JSP房屋租赁系统JSP房屋出售系统JSP房屋租赁系统
  7. 《学Unity的猫》原创插画,皮皮猫的家
  8. CSS浮动父级塌陷的解决办法
  9. Zemax-LED准直光斑为什么是环形
  10. python爬取淘宝搜索页面+url+图片下载并将信息保存到MySQL数据库中