POJ–2289–Jamie's Contact Groups【二分图的多个匹配+二分法答案】

POJ–2289–Jamie's Contact Groups【二分图的多个匹配+二分法答案】

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

链接:#include<cstring> #include<string> #include<fstream> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cctype> #include<algorithm> #include<queue> #include<map> #include<set> #include<vector> #include<stack> #include<ctime> #include<cstdlib> #include<functional> #include<cmath> using namespace std; #define PI acos(-1.0) #define MAXN 500010 #define eps 1e-6 #define INF 0x7FFFFFFF #define LLINF 0x7FFFFFFFFFFFFFFF #define seed 131 #define MOD 1000000007 #define ll long long #define ull unsigned ll #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int M=2010; int bmap[M][M]; //下标0開始 bool bmask[M]; int nx,ny; int vcy[M]; int cy[M][M]; int limit; //多重匹配限制 bool findpath(int u){ int i,j; for(i = 0; i < ny; i++){ if(bmap[u][i] && !bmask[i]){ bmask[i] = 1; if(vcy[i] < limit){ cy[i][vcy[i]++] = u; return 1; } for(j = 0; j < vcy[i]; j++){ if(findpath(cy[i][j])){ cy[i][j] = u; return 1; } } } } return 0; } bool MulMatch(){ memset(vcy,0,sizeof(vcy)); for(int i=0; i < nx; i++){ memset(bmask,0,sizeof(bmask)); if(!findpath(i)) return 0; } return 1; } char str[5000]; int main(){ int i,j,x; while(scanf("%d%d",&nx,&ny),nx||ny){ memset(bmap,0,sizeof(bmap)); for(i = 0; i < nx; i++){ scanf("%s", str); gets(str); stringstream sin(str); while(sin >> x){ bmap[i][x] = 1; } } int l = 0, r = nx; while(l < r){ limit = (l + r) / 2; if(MulMatch()) r = limit; else l = limit + 1; } printf("%d\n", r); } return 0; }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117199.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里面试失败后,一气之下我图解了Java中18把锁「建议收藏」

    目录乐观锁和悲观锁独占锁和共享锁互斥锁和读写锁公平锁和非公平锁可重入锁自旋锁分段锁锁升级(无锁|偏向锁|轻量级锁|重量级锁)锁优化技术(锁粗化、锁消除)乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程.

    2022年4月18日
    39
  • BufferedWriter使用write方法如何换行

    BufferedWriter使用write方法如何换行BufferedWriter对象自带newline()方法可以换行,但如果在字符串中部换行,不想用newline()方法该如何做呢?使用\n是无法实现的,使用\n后,只会出现一个空格,并未实现换行,在想要实现换行的地方加入\r\n就可以了例如Filefile=newFile(“d:/ioPractice/text.txt”);Writerfw=newFileWrite

    2022年6月10日
    67
  • 深入理解Spring事件机制(二):事件的推送[通俗易懂]

    深入理解Spring事件机制(二):事件的推送[通俗易懂]前言Spring从3.x开始支持事件机制。在Spring的事件机制中,我们可以令一个事件类继承ApplicationEvent类,然后将实现了ApplicationListener

    2022年8月17日
    36
  • charles乱码怎么解决_如何防止charles抓包

    charles乱码怎么解决_如何防止charles抓包前言当使用Charles抓包时,发现数据都是乱码,这时需要安装证书解决办法1.点击charles窗口,点击左上角Help->SSLProxying→InstallCharles

    2022年7月31日
    9
  • filezilla 教程_filezilla怎么登录

    filezilla 教程_filezilla怎么登录FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放程式,具有多种特色、直接的接口。既然提到ftp客户端,那就不得不提iis7。IIS7服务器管理工具中的ftp功能可以实现批量添加服务

    2022年8月2日
    5
  • python精彩编程200例 pdf-Python程序设计 第3版pdf「建议收藏」

    Python程序设计第3版内容简介《Python程序设计第3版》是面向大学计算机科学专业的教材。本书以Python语言为工具,采用相当传统的方法,强调解决问题、设计和编程是计算机科学的核心技能。全书共13章,此外,还包含两个附录。第1章到第5章介绍计算机与程序、编写简单程序、数字计算、对象和图形、字符串处理等基础知识。第6章到第8章介绍函数、判断结构、循环结构和布尔值等话题。第9章到第1…

    2022年4月6日
    116

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号