网络流24题 圆桌聚餐
原题位置: 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题 圆桌聚餐相关推荐
- [网络流24题]圆桌聚餐
网络流大法好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...
- COGS 729 [网络流24题] 圆桌聚餐
«问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...
- cogs729. [网络流24题] 圆桌聚餐
«问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...
- [网络流24题] 圆桌聚餐
从s向每个单位连一条容量为ri的边,从每个餐桌向汇点连一条容量为ci的边,每个单位与每个餐桌之间连一条容量为1的边,最大流即为答案. // q.c#include<iostream> #i ...
- COGS 729. [网络流24题] 圆桌聚餐
«问题描述: 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为 ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐. ...
- [网络流24题]圆桌问题
Description 假设有来自$n$个不同单位的代表参加一次国际会议.每个单位的代表数分别为$r_i(i\;\in\;[1,n])$.会议餐厅共有$m$张餐桌,每张餐桌可容纳$c_i(i\;\in ...
- LibreOJ 6004. 「网络流 24 题」圆桌聚餐 网络流版子题
#6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...
- 【网络流24题】圆桌聚餐
LOJ 6004 [网络流24题]圆桌聚餐 题面 假设有来自\(n\)个不同单位的代表参加一次国际会议.每个单位的代表数分别为\(r_i\).会议餐厅共有\(m\)张餐桌,每张餐桌可容纳\(c_i\) ...
- loj #6004. 「网络流 24 题」圆桌聚餐(最大流)
#6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...
最新文章
- 史上最全的长读长数据校错方法大比拼
- python实现表格合并_Python实现合并excel表格的方法分析
- 前端学习(2821):windows上配置tabber字段
- esxi usb插口_酷暑大作战 | USB-C风扇新体验
- python转换窗口无响应_Tkinter窗口显示(没有响应),但代码正在运行
- ros-Qt代码环境的搭建
- Oracle的10046事件
- 英国电信移除华为设备后,多家运营商继续与华为合作,并达成20亿英镑协议...
- zen服务器芯片,Intel颤抖!AMD 32核心终极版Zen亮相:媲美人脑
- 离散数学 习题篇 —— 最小生成树
- python控制电脑音量,声音之控制音量,,
- OPPO K9 Pro刷root强解锁BL刷面具Magisk框架 oppo k9pro root教程
- Python3对股票数据进行分析
- 开年工作重点:帮助同事找到工作的价值
- 百度大脑通用物体识别使用攻略
- 硬件设计之DDS AD9854
- 什么是交互设计,为什么要进行交互设计
- 工业交换机的单模多模是什么意思?
- 阿里云服务器后台运行服务
- 熵(entropy)的定义
热门文章
- FlowJo 10.8.1 WIN版本丨英文 软件安装包下载 安装教程步骤丨WIN系统
- 【植树节专题】回顾TcaplusDB的十年发展史
- 记第一次Python爬虫-----五块五毛网站小说
- cocos2dx RenderTexture 用法
- 身份证实名认证api
- javawebJAVAJSP网上租房系统JSP房屋租赁系统JSP房产信息网站JSP房屋租赁系统JSP房屋出售系统JSP房屋租赁系统
- 《学Unity的猫》原创插画,皮皮猫的家
- CSS浮动父级塌陷的解决办法
- Zemax-LED准直光斑为什么是环形
- python爬取淘宝搜索页面+url+图片下载并将信息保存到MySQL数据库中