Mean

题目描述

NiroBC 是猫咪学堂一年级的新生,开学第一天,学堂组织了一场迎新会,在
迎新会上,猫咪们会互相赠送礼物。
一年级的新生共有 N 只猫咪,编号为 1 . . . N(包括 NiroBC 自己),其中有
M 对猫咪是在开学前就互相认识的。学堂规定,对于任意一对已经互相认识的
猫咪 u, v,要么 u 送 v 一份礼物,要么 v 送 u 一份礼物。
学堂知道猫咪们都十分抠门,所以希望安排一种送礼物的方案,使得送出礼
物最多的猫咪送出的礼物最少。

输入格式

第一行两个正整数 N, M,表示猫咪的数量和已经互相认识的猫咪的对数。
接下来 M 行,每行两个整数 u, v,表示 u, v 已经互相认识。数据保证 u ̸= v,
且同一个数对最多出现一次((u, v) 和 (v, u) 算作同一数对)。

输出格式

一个整数,表示送出礼物最多的猫咪最少需要送出几份礼物。

分析:

由于决策单调性,所以可以二分答案,而判定mid的合法性可以跑最大流,将个关系
当作一个点,源点与这些点相连,容量为1,将这些关系的点与此关系的两个点连一条
容量为1的边,最后将这些人的点与汇点连接一条容量为mid的边,跑出最大流,若等
于关系数m,则合法,否则不合法。

代码:

#include<cstdio>
#include<cctype>
#define min(a,b) (a<b?a:b)
#define out(x) printf("%d",x)
#define inf 0x3f3f3f3f
#define maxn 1000007
#define maxm 1000007template <typename T> void in(T &x) {char ch=getchar();bool flag=0;while(ch>'9'||ch<'0') flag|=(ch=='-'),ch=getchar();x=ch-'0';ch=getchar();while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();if(flag) x=-x;return ;
}int n,m,s,t,cnt=1,cur[maxn],head[maxn],d[maxn],q[maxn];
struct edge{int to,cost,nxt;
}e[maxm];void link(int u,int v,int cost){e[++cnt].to=v;e[cnt].nxt=head[u];e[cnt].cost=cost;head[u]=cnt;e[++cnt].to=u;e[cnt].nxt=head[v];e[cnt].cost=0;head[v]=cnt;
}bool bfs(){for(int i=0;i<=t;i++)cur[i]=head[i],d[i]=0;int ha=1,ta=1,now;d[s]=1;q[1]=s;while(ha<=ta){now=q[ha++];for(int i=head[now];i;i=e[i].nxt)if(!d[e[i].to]&&e[i].cost){d[e[i].to]=d[now]+1;q[++ta]=e[i].to;if(e[i].to==t) return 1;}}return 0;
}int dfs(int u,int flow){if(u==t) return flow;int rest=flow;for(int w,i=cur[u];i;i=e[i].nxt){cur[u]=i;if(e[i].cost&&d[e[i].to]==d[u]+1){w=dfs(e[i].to,min(rest,e[i].cost));if(!w) { d[e[i].to]=0;continue;}e[i].cost-=w;e[i^1].cost+=w;rest-=w;if(rest==0) return flow;}}if(rest==flow)d[u]=0;return flow-rest;
}int maxflow=0;void dinic(){int w;maxflow=0;while(bfs())while(w=dfs(s,inf)) maxflow+=w;return ;
}void build(){in(n);in(m);s=0,t=n+m+5;for(int i=1,u,v;i<=m;i++){in(u);in(v);link(s,i,1);link(i,u+m,1);link(i,v+m,1);}for(int i=1;i<=n;i++)link(i+m,t,0);return ;
}bool work(int x){for(int i=head[s];i;i=e[i].nxt){e[i].cost=1;e[i^1].cost=0;}for(int i=1;i<=m;i++)for(int to,j=head[i];j;j=e[j].nxt){to=e[j].to;if(to!=s){e[j].cost=1;e[j^1].cost=0;}}for(int i=m+1;i<=n+m;i++)for(int to,j=head[i];j;j=e[j].nxt){to=e[j].to;if(to==t){e[j].cost=x;e[j^1].cost=0;}}dinic();if(maxflow==m) return 1;return 0;
}int main(){build();int l=1,ans=n,r=n,mid;while(l<=r){mid=(l+r)>>1;if(work(mid)) ans=mid,r=mid-1;else l=mid+1;}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/ieqefcr/p/9833209.html

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

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

相关文章

如何开启mysql计划事件

首先在sql中查询计划事件的状态&#xff1a;SHOW VARIABLES LIKE event_scheduler如果返回的是off表示当前是关闭状态&#xff0c;如果是on当前已经开启了计划任务。在mysql程序的目录下找到my.ini文件&#xff0c;添加一个项&#xff1a;event_scheduler 1保存后重启mysql服务…

在Java等于方法中进行精确比较

多年来&#xff0c;我一直在处理旧版Java代码&#xff0c;因此遇到了微妙的逻辑和性能问题&#xff0c;这些问题可以追溯到不正确覆盖的Object.equals&#xff08;Object&#xff09;方法。 尽管“等于”方法背后的概念看似简单&#xff0c;但Josh Bloch在《 有效Java》中指出&…

python爬虫网络出错怎么办_Python爬虫常见问题

第一个问题&#xff1a;JS加密如何突破 (1) 熟练掌握Chrome的开发者工具的各个功能&#xff0c;Elements&#xff0c; Network&#xff0c;Source (2) 认真观察&#xff0c;善于思考。Network查看加载流程&#xff0c;找可疑的xhr请求&#xff0c;设置xhr断点&#xff0c;通过C…

Linux Top 命令解析 比较详细

TOP命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监…

用webstorm在chrome 调试页面时一直弹出 copy authorization url to clipboard

用chrome来调试页面&#xff0c;每次刷新会弹出 requested without authorization, 是因为更新后的bug&#xff0c;可以在Setting - debugger中设置 转载于:https://www.cnblogs.com/dxxzst/p/WebStorm.html

2003 cant connect to MySQL server on 'XXX.XXX.XXX.XXX'

数据库在配置正常并且也配置了mysql 在局域网上互相访问的用户和ip但是会出现2003 cant connect to MySQL server on XXX.XXX.XXX.XXX ,本地机子连接一切正常但是局域网其他机器就是无法连接。通过检测发现是电脑的防火墙问题&#xff0c;关闭防火墙后电脑上的数据库就可以被局…

C++插入中文到mysql乱码

C 插入中文字符到mysql数据库出现乱码&#xff0c;奇怪的是直接在数据库写查询语句直接进行插入&#xff0c;是不会出现乱码 然后就根据一些材料把数据库&#xff0c;得编码形式改为gb2312但是结果仍然乱码中&#xff08;设置my.ini中的字符集&#xff09;。 猜想 有可能是C和…

mountain_OS X Mountain Lion上的多个Java版本

mountain在Mountain Lion之前&#xff0c;Java被捆绑在OS X中。似乎在升级期间&#xff0c;我在计算机上安装的Java 6版本被删除了。 显然&#xff0c;在升级过程中卸载Java的原因是Java运行时存在的安全问题。通过这种方式&#xff0c;您不得不安装可解决此安全问题的最新版本…

python手机自动化测试脚本语言_Python+Appium实现APP自动化测试

一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows&#xff0c;官网地址 http://appium.io/ ​ 点击下载按钮会到GitHu…

Win7无线网络和有线网络网络负载选择

最近在看如何让有线网络和无线网络实现对接。win7网络可以同时连接两个网卡无线和有线&#xff0c;在同时间上连接两个网络用 的是哪个网络&#xff0c;用是哪个流量(可以用currPorts软件来查看电脑用是哪个网络的流量&#xff09;&#xff0c;哪个网络是闲置网络。 同时可以…

怎么查看linux服务器有cpu

cat /proc/cpuinfo中的信息processor 逻辑处理器的id。physical id 物理封装的处理器的id。core id 每个核心的id。cpu cores 位于相同物理封装的处理器中的内核数量。siblings 位于相同物理封装的处理器中的逻辑处理器的数量。1 查看物理CPU的个数#cat /proc/cpuinfo |grep &q…

python条件输出_python基础(二)条件判断、循环、格式化输出

继续上一篇&#xff0c;今天主要总结一下条件判断、循环、格式化输出 一.条件判断 python中条件判断使用if else来判断&#xff0c;多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样&#xff0c;否则就怎么怎么这样&#xff0c;格式如下&#xff1a; score i…

拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?

JDK 9发行日期推迟到2017年7月 距JDK 9发行不到200天&#xff0c;它又被推迟了 。 新的发布日期已更新为2017年7月&#xff0c;比之前推迟的日期晚了四个月。 推迟日期 9月13日&#xff0c;Oracle Java平台小组的首席架构师Mark Reinhold发表了他的建议&#xff0c;推迟了JDK…

linux下安装maven

1、下载maven安装包 wget http://219.238.7.73/files/211300000CAE3924/mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz 2、解压缩maven tar -zxvf apache-maven-3.5.4-bin.tar.gz 3、在/etc/profile文件中配置maven环境变量 #maven …

小技巧教你解决此windows副本不是正版的问题

最近有很多朋友都说&#xff0c;在安装完win7系统之后&#xff0c;却出现了“此windows副本不是正版” 的问题&#xff0c;我们该怎么解决这个问题呢&#xff1f;今天就教大家如何解决此windows副本不是正版的问题。 点击左下角的“开始”按钮&#xff0c;然后在搜索框中输入“…

NGINX介绍及参数

Nginx("engine x")是一个IMAP/POP3/SMTP代理服务器,也是一个高性能的 HTTP 和 反向代理服务器,但现在大多数情况下都是用来做静态web服务器和反向代理服务器,在作为反向代理服务器的时候,Nginx可以对后端的real server做负载均衡,基于应用层的负载均衡,但是他仅支持一…

FinalTest 基于web的登录口令修改设计

本次任务主要实现登录口令的修改&#xff0c;当用户修改了登录名和登陆密码以后&#xff0c;下一次登录将会使用新的登录名和登录密码。 FT.1 页面设计 登录的页面主要使用了原来的pass.htm文件&#xff0c;主要是因为我自己做了一个相差不大的界面&#xff0c;如下图所示&…

python脚本编程100例_python100例,python经典例题

肯定有用&#xff0c;练习就是实战。对于刚学习编程的同学&#xff0c;我觉得跟着例子学习&#xff0c;会有很大的进步。至少让你熟悉语法和理解编程的一些技巧。当你能熟练掌握python编程的方法后&#xff0c;你需要学习一些第三方库&#xff0c;python的第三方库很强大。具体…

windows Server 2003 尝试安装.NET Framework 4 失败

在windows Server 2003 尝试安装.NET Framework 4 失败 提示出“产生阻滞问题”&#xff0c;这个是系统没有安装WIC产生的。 到https://www.microsoft.com/zh-cn/download/details.aspx?id17718 下载WIC后进行安装&#xff0c;安装WIC后能正常安装.NET Framework 4。

java 在线编辑器_最好的Markdown开源在线编辑器,没有之一!

点击上方蓝色字体&#xff0c;选择“设为星标”回复”666“获取面试宝典Editor.md 是一款开源的、可嵌入的 Markdown 在线编辑器(组件)&#xff0c;基于 CodeMirror、jQuery 和 Marked 构建。主要特性支持“标准” Markdown / CommonMark 和 Github 风格的语法&#xff0c;也可…