所有餐桌连源点容量为餐桌容量,所有单位连汇点容量为单位人数,题目要求同一单位不能再同一餐桌就餐,那么对于每个餐桌,与所有单位建边且容量为1即可,最后求一遍最大流。

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<vector>
using namespace std;
const int INF = 1e9 + 7;
const int maxm = 1005;
const int maxn = 100005;
struct node
{int v, flow, next;
}edge[maxn];
vector<int>p[maxm];
int cur[maxn], head[maxn], vis[maxm], dis[maxm], pre[maxm], f[maxm][maxm];
int cnt, s, t, n, m, rev = 0;
void init()
{rev = 0, cnt = 0, s = 0, t = n + m + 1;memset(head, -1, sizeof(head));
}
void add(int u, int v, int w)
{edge[cnt].v = v, edge[cnt].flow = w, edge[cnt].next = head[u], head[u] = cnt++;edge[cnt].v = u, edge[cnt].flow = 0, edge[cnt].next = head[v], head[v] = cnt++;
}
int bfs()
{memset(pre, -1, sizeof(pre));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 = head[u];i != -1;i = edge[i].next){int v = edge[i].v;if (dis[v] == -1 && edge[i].flow){pre[v] = u;dis[v] = dis[u] + 1;q.push(v);}}}if (dis[t] == -1) return 0;return 1;
}
int dfs(int u, int flow)
{if (u == t) return flow;for (int i = cur[u];i != -1;i = edge[i].next){int v = edge[i].v;if (dis[v] == dis[u] + 1 && edge[i].flow){int d = dfs(v, min(edge[i].flow, flow));if (d > 0){edge[i].flow -= d, edge[i ^ 1].flow += 1;return d;}}}return 0;
}
int dinic()
{int ans = 0, d;while (bfs()){for (int i = s;i <= t;i++) cur[i] = head[i];while (d = dfs(s, INF))ans += d;}return ans;
}
int main()
{int i, j, k, sum = 0;scanf("%d%d", &n, &m);init();for (i = 1;i <= n;i++){scanf("%d", &k);sum += k;add(i + m, t, k);}for (i = 1;i <= m;i++){scanf("%d", &k);add(s, i, k);for (j = 1;j <= n;j++)add(i, j + m, 1);}if (sum != dinic()){printf("0\n");return 0;}printf("1\n");for (i = 1;i <= m;i++){for (j = head[i];j != -1;j = edge[j].next){if (edge[j].flow == 0){int v = edge[j].v;if (v > m&&v < t)p[v].push_back(i);}}}for (i = 1;i <= n;i++){for (j = 0;j < p[i + m].size();j++)printf("%d ", p[i + m][j]);printf("\n");}return 0;
}

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

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

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

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

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

  3. #6004. 「网络流 24 题」圆桌聚餐(重点整理两种网络流输出方式)

    P3254 圆桌问题 题意:就是让不同的单位的员工做不同的桌子,并输出方案. 建图很好想,就不多**了. 关键是路径输出: for(int i = 1; i <= m; i++){int len ...

  4. 【loj】#6004. 「网络流 24 题」圆桌聚餐(二分图匹配)

    记录一个菜逼的成长.. 题目链接 二分图匹配,由于一个代表只能一桌,同一个代表团不能坐同一桌 所以代表团跟桌的流量设为1 #include <bits/stdc++.h> using na ...

  5. 「网络流24题」 题目列表

    「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...

  6. 「网络流24题」 12. 软件补丁问题

    「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移. 没错,跟网络流没任何关系. b1.b2.f1.f2 都用二进制存下来,第 i 位表示是否有这个错误. 然后从每位都是 1 到 0 ...

  7. loj #6226. 「网络流 24 题」骑士共存问题

    #6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些 ...

  8. liberOJ#6006. 「网络流 24 题」试题库 网络流, 输出方案

    #6006. 「网络流 24 题」试题库   题目描述 假设一个试题库中有 n nn 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 m mm 道题组成试卷.并要求试卷 ...

  9. LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图

    #6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...

最新文章

  1. 在你做回归测试的时候,突然有个着急的测试需求,你会怎么做?
  2. Four-tuples (2018山东省省赛 容斥定理)
  3. iOS之深入解析Runloop的底层原理
  4. Linux shell重复执行某命令n次
  5. c语言xc比较大小写,XCTestAPI文档.docx
  6. java静态页面我都做不出_Java高并发:静态页面生成方案
  7. web开发应届生入职_我如何从全职妈妈着手完成第一份Web开发人员工作
  8. Hibernate,Ibatis,Jdbc 区别
  9. 【Vue2.0】— 插件(十六)
  10. SQL Server 2014 软件安装教程
  11. ev3 android,乐高®头脑风暴教育机器人EV3编程
  12. MQTT-mosquitto学习笔记
  13. 一IT项目经理的总结
  14. python拼多多领现金_拼多多天天领现金最后都是1分怎么办?
  15. 《勇者名录》11.19正式上线链游玩家|休闲养肝、探索大陆
  16. 使用 Karabiner 在 Mac 上配置非苹果键盘
  17. 不限距离4g/5g信号远程遥控小车
  18. 【代码篇】通过三维坐标在CAD里自动输出三维模型
  19. GBase 8s灾备集群HAC (一) 概述
  20. Heavy Transportation(Dijkstra算法)

热门文章

  1. Alamofire(四)怎么合理使用Alamofire
  2. 交叉编译 SQLite
  3. 哈工大2021春计算机系统大作业 程序人生-Hello’s P2P
  4. VS2010 不生成pdb 和ilk文件
  5. 结合WMS系统谈一谈仓库货物精细化管理
  6. php面试题之一,PHP的面试题集
  7. 超宽屏幕比例_49寸,1800R大曲率,32:9超宽比例的带鱼屏你见过吗
  8. 【Linux时钟系统】
  9. sylixos 将函数添加到内核符号表中及使用
  10. android10调用tuya接口完成二维码登录