UVa10779 - Collectors Problem(最大流)

题目链接

简介:交换贴纸

分析:
这也算是一个天坑了
很久之前就看过这道题,但是一直没有填

美妙的建图:
我们用n-1个点表示每个除Bob之外的人
用m个点表示贴纸,从源点向这m个点连边,边的容量是Bob拥有该种贴纸的数量

接下来我们要连接其他人和贴纸:
如果第i个人有超过一张j种贴纸(有k张),那么我们就连接i—>j,容量为k-1,表示ta可以贡献出k-1张第j种贴纸
如果第i个人没有第j种贴纸,那么我们连接j—>i,容量为1,表示ta最多接受一张j贴纸

最后所有的贴纸连向汇点,流量为1

最大流即为最后答案

附样例图:
这里写图片描述

//这里写代码片
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>using namespace std;const int N=101;
const int INF=0x33333333;
struct node{int x,y,v,nxt;
};
node way[N*N];
int st[N],tot,deep[N],cur[N],s,t;
int n,m,zl[30][30];void add(int u,int w,int z)
{tot++;way[tot].x=u;way[tot].y=w;way[tot].v=z;way[tot].nxt=st[u];st[u]=tot;tot++;way[tot].x=w;way[tot].y=u;way[tot].v=0;way[tot].nxt=st[w];st[w]=tot;
}int bfs(int s,int t)
{for (int i=s;i<=t;i++) cur[i]=st[i];memset(deep,-1,sizeof(deep));queue<int> Q;Q.push(s);deep[s]=1;while (!Q.empty()){int now=Q.front(); Q.pop();for (int i=st[now];i!=-1;i=way[i].nxt)if (way[i].v&&deep[way[i].y]==-1){deep[way[i].y]=deep[now]+1;Q.push(way[i].y);}}return deep[t]!=-1;
}int dfs(int now,int t,int limit)
{if (now==t||!limit) return limit;int f,flow=0;for (int i=cur[now];i!=-1;i=way[i].nxt){cur[now]=i;if (way[i].v&&deep[way[i].y]==deep[now]+1&&(f=dfs(way[i].y,t,min(limit,way[i].v)))){flow+=f;limit-=f;way[i].v-=f;way[i^1].v+=f;if (!limit) break;}}return flow;
}int dinic()
{int ans=0;while (bfs(s,t))ans+=dfs(s,t,INF);return ans;
}int main()
{int T;scanf("%d",&T);for (int cas=1;cas<=T;cas++){memset(st,-1,sizeof(st));tot=-1;scanf("%d%d",&n,&m);memset(zl,0,sizeof(zl));for (int i=1;i<=n;i++){              int k,x;                                     //inputscanf("%d",&k);for (int l=1;l<=k;l++)scanf("%d",&x),zl[i][x]++;}s=0; t=n+m+1;for (int i=1;i<=m;i++){if (zl[1][i]) add(s,i,zl[1][i]);add(i,t,1);} for (int i=2;i<=n;i++)for (int j=1;j<=m;j++){if (zl[i][j]>1)              //可以给出一张j add(i+m,j,zl[i][j]-1);if (!zl[i][j])               //没有j,最多可以接受一张j add(j,i+m,1);}printf("Case #%d: %d\n",cas,dinic());}   return 0;
}

转载于:https://www.cnblogs.com/wutongtong3117/p/7673029.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为免费虚拟服务器,免费试用虚拟服务器

免费试用虚拟服务器 内容精选换一换本节操作介绍切换虚拟私有云的操作步骤。仅支持单网卡切换虚拟私有云。切换虚拟私有云会导致云服务器网络中断。切换虚拟私有云过程中&#xff0c;请勿操作云服务器的弹性公网IP&#xff0c;或对云服务器做其他操作。切换虚拟私有云后&#x…

带有JWT示例的​​Spring Oauth2

有时以前&#xff0c;我们发表了一篇文章&#xff0c;分享了一种在云环境中实现无状态会话的自定义方法。 今天&#xff0c;让我们探讨为Spring Boot应用程序设置Oauth2身份验证的另一个流行用例。 在此示例中&#xff0c;我们将使用JSON Web令牌&#xff08;JWT&#xff09;作…

Spring源码解析-实例化bean对象

spring加载配置文件&#xff0c;AbstractApplicationContext类中的refresh方法起着重要的作用。 Overridepublic void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// Prepare this context for refreshing.准备刷新…

java docx文档解析_带有docx4j的Java Word(.docx)文档

java docx文档解析几个月前&#xff0c;我需要创建一个包含许多表和段落的动态Word文档。 过去&#xff0c;我曾使用POI来实现此目的&#xff0c;但是我发现它很难使用&#xff0c;并且在创建更复杂的文档时对我来说效果不佳。 因此&#xff0c;对于这个项目&#xff0c;经过一…

jit即时编译_热点中的即时编译器(JIT)

jit即时编译即时编译器&#xff08;JIT&#xff09;的概念以及更广泛的自适应优化是除Java&#xff08;.Net&#xff0c;Lua&#xff0c;JRuby&#xff09;之外的许多语言中众所周知的概念。 为了解释什么是JIT编译器&#xff0c;我想先定义一个编译器概念。 根据维基百科&…

每天十分钟系列:JS数据操作之神奇的map()

Array.prototype.map() map()方法可以创建一个新数组&#xff0c;其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 demo1 上面的例子&#xff0c;在控制台中打印的结果是&#xff1a; 1 2 3 4 5 demo2 javascript学习交流群&#xff1a;453833554 上面的例子…

使用vue-axios请求geoJson数据报错的问题

最近的项目用到了echarts一个带有散点地图的图表,按照正常jquery写法应该使用ajax请求geojson的数据动态去切换地图,就像下面这样 $.get(Js/map/ cityData.name .json, function(geoJson) {map(gr-map, cityData, geoJson, geoCoordMap);//调用地图方法}); 页面显示(成功) bu…

前端工业物联网开发(Electron + Typescript + Vue)

从SpaceX公司的带来的Javascript上天新闻开始&#xff0c;以及近几年js语言在整个互联网的广泛应用&#xff0c;注定未来js语言有着不平凡的使命&#xff0c;跨端&#xff08;一套代码多端运行&#xff09;、易UI&#xff08;前端开发UI的便利&#xff09;、丰富的生态&#xf…

JAVA记录-Servlet介绍

1.什么是Servlet Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a;1、编写一个Java类&#xff0c;实现…

前端jenkins打包编译发布项目流程

如今的前端项目已不像之前直接写完代码&#xff0c;扔到服务器直接运行了。免不了安装依赖&#xff0c;执行build过程&#xff0c;然后再将打包后的代码上传到服务器&#xff0c;可能还需要更改配置文件啥的。如此多的步骤严重影响开发的日常划水时间。所以jenkins自动化部署少…

OpenMap教程4 –图层

1.简介 在第一个教程中&#xff0c;我们创建了一个基本的OpenMap GIS应用程序&#xff0c;该应用程序在JFrame中显示一个从文件系统加载的具有一个形状图层的地图。 该教程基于com.bbn.openmap.app.example.SimpleMap 。 在第二篇教程中&#xff0c;我们扩展了基本应用程序以使…

Vue.js实战之Vuex的入门教程

在 Vue.js 的项目中&#xff0c;如果项目结构简单&#xff0c; 父子组件之间的数据传递可以使用 props 或者 $emit 等方式。 但是如果是大型项目&#xff0c;很多时候都需要在子组件之间传递数据&#xff0c;使用之前的方式就不太方便。Vue 的状态管理工具 Vuex 完美的解决了这…

为什么写公众号,为什么改名字

这是一篇水果文&#xff0c;啥叫水果文&#xff1f;比水文稍微有点内容&#xff0c;我暂时这么解释吧。最近刚刚开始决定写公众号&#xff0c;其实这个订阅号申请的还蛮早的&#xff0c;当时是为了学习开发公众号而创建的&#xff0c;所以中间有过一段空档期&#xff08;呸&…

chrome浏览器解决ajax跨域问题

方法一 1、右键谷歌快捷方式&#xff0c;选择“属性”。 2、打开属性窗口&#xff0c;切换到“快捷方式”选项卡。 3、在目标路径的后面添加【 --disable-web-security】&#xff0c;其中chrome.exe与--disable之间有一个空格 4、点击应用&#xff0c;然后点击确定关闭窗口。 5…

前端的使命来了

最近国家工信部发布了一则关于重大App进行适老化改造的政策目的在于随着互联网的普及&#xff0c;有一部分群体在互联网应用的使用上存在着一定的障碍&#xff0c;为了保证这部分人能够顺利的使用手机中的App&#xff0c;国家出手了&#xff01;现在人们的生活越来越离不开互联…

第二章 Burp Suite代理和浏览器设置

Burp Suite代理工具是以拦截代理的方式&#xff0c;拦截所有通过代理的网络流量&#xff0c;如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量&#xff0c;通过拦截&#xff0c;Burp Suite以中间人的方式&#xff0c;可以对客户端请求数据、…

Multiavatar头像生成,要多少有多少

还在为选一个个性十足&#xff0c;不同于别人的头像而烦恼吗&#xff1f;12,230,590,464个头像够你选择够不够&#xff1f;Multiavatar一款集多文化头像生成器&#xff0c;它可以根据不同的种族&#xff0c;不同的文化&#xff0c;不同的年龄&#xff0c;不同的世界观&#xff…

将Java 8流解析为SQL

当Java 8发行并且人们开始流式处理各种东西时&#xff0c;很快他们就开始想象如果可以以相同的方式使用数据库将有多大的潜力。 本质上&#xff0c;关系数据库由以表状结构组织的巨大数据块组成。 这些结构非常适合进行过滤和映射操作&#xff0c;如SQL语言的SELECT&#xff0c…

TCP Congestion Control

TCP Congestion Control Congestion occurs when total arrival rate from all packet flows exceeds R over a sustained(维持) period of timeBuffers(缓冲) at multiplexer will fill and packets will be lostPhases of Congestion Behavior Light traffic Arrival Rate &l…

SVG格式的Icon,用了你就知道有多香

继阿里的iconfont之后&#xff0c;字节跳动也出品了自己的矢量图标库&#xff0c;可以实现根据单一SVG源文件变换出多种主题&#xff0c; 具备丰富的分类、更轻量的代码和更灵活的使用场景。矢量SVG图标的出现&#xff0c;完全改变了前端的开发方式&#xff0c;之前总是通过设计…