loj #6004. 「网络流 24 题」圆桌聚餐(最大流)
来源:互联网 发布:ubuntu安装maven 编辑:程序博客网 时间:2024/05/29 10:22
#6004. 「网络流 24 题」圆桌聚餐
内存限制:256 MiB时间限制:5000 ms标准输入输出
题目类型:传统评测方式:Special Judge
上传者: 匿名
题目描述
输入格式
输出格式
样例
数据范围与提示
如果代表团到那个桌子的流量为0 即选了那个桌子
#include <iostream>#include <cstdio>#include <cstring>#include <climits>#include <vector>#include <queue>#include <algorithm>using namespace std;const int N = 2100;const int inf = 99999999;int dis[N], lter[N];struct node{ int to, cap, rev, cap2, id;};vector<node>p[N];void add(int u,int v,int w){ node tmp; tmp.to=v, tmp.cap=w,tmp.rev=p[v].size(); p[u].push_back(tmp); tmp.to=u, tmp.cap=0,tmp.rev=p[u].size()-1; p[v].push_back(tmp); return ;}int bfs(int s,int t){ memset(dis,-1,sizeof(dis)); queue<int>q; dis[s]=0; q.push(s); while(!q.empty()) { int u=q.front(); q.pop(); for(int i=0; i<p[u].size(); i++) { int v=p[u][i].to; if(dis[v]==-1&&p[u][i].cap>0) { dis[v]=dis[u]+1; q.push(v); } } } return dis[t]==-1;}int dfs(int s,int t,int flow){ if(s==t) return flow; for(int &i=lter[s]; i<p[s].size(); i++) { int v=p[s][i].to; if(dis[v]==dis[s]+1&&p[s][i].cap>0) { int f=dfs(v,t,min(flow,p[s][i].cap)); if(f>0) { p[s][i].cap-=f, p[v][p[s][i].rev].cap+=f; return f; } } } return 0;}int dinic(int s,int e){ int flow=0, f; while(1) { while(bfs(s,e)) return flow; memset(lter,0,sizeof(lter)); while(f=dfs(s,e,inf),f>0) { flow+=f; } } return flow;}int a[N], b[N];int main(){ int n, m; scanf("%d %d", &m, &n); int s=0, t=m+n+1, sum=0; for(int i=1;i<=m;i++) { scanf("%d",&a[i]); add(s,i,a[i]); sum+=a[i]; } for(int i=1;i<=n;i++) { scanf("%d",&b[i]); add(m+i,t,b[i]); } for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) add(i,j+m,1); int ans=dinic(s,t); if(ans<sum)puts("0"); else { puts("1"); for(int i=1;i<=m;i++) { for(int j=0;j<p[i].size();j++) if(p[i][j].cap==0) printf("%d ",p[i][j].to-m); puts(""); } } return 0;}
阅读全文
0 0
- [Loj]#6004. 「网络流 24 题」圆桌聚餐
- loj #6004. 「网络流 24 题」圆桌聚餐(最大流)
- 【loj】#6004. 「网络流 24 题」圆桌聚餐(二分图匹配)
- loj6004「网络流 24 题」圆桌聚餐(最大流)
- [网络流24题] 圆桌聚餐 最大流/路径输出
- [网络流24题] 05 圆桌聚餐(最大流判满流)
- 「网络流 24 题」圆桌聚餐
- 「网络流 24 题」圆桌聚餐
- [网络流24题] 圆桌聚餐
- [网络流24题]圆桌聚餐
- 网络流24题 05圆桌聚餐
- cogs729. [网络流24题] 圆桌聚餐
- 网络流24题 圆桌聚餐
- COGS 729 [网络流24题] 圆桌聚餐
- Cogs 729. [网络流24题] 圆桌聚餐
- [网络流24题-4]cogs729 圆桌聚餐
- COGS 729. [网络流24题] 圆桌聚餐
- 【网络流24题】圆桌聚餐(二分图)
- 实验之链队列
- 37. Sudoku Solver
- STM32 ST-LINK Utility安装及使用
- SSH免密码登录
- Android中WebView加载H5页面JS不执行的问题
- loj #6004. 「网络流 24 题」圆桌聚餐(最大流)
- 输出100个100以内的随机数(C++)
- DDL、DML和DCL的区别与理解
- Linux编程编程实战(三)
- Python 初探2
- Oracle存储过程基本语法介绍
- 记录Android 版本小于19的Webview和js交互的一个坑!
- 预解析
- typedef定义数据类型