POJ 2289 Jamie's Contact Groups 二分图多重匹配 难度:1
Time Limit: 7000MS | Memory Limit: 65536K | |
Total Submissions: 6511 | Accepted: 2087 |
Description
Input
Output
Sample Input
- 3 2
- John 0 1
- Rose 1
- Mary 1
- 5 4
- ACM 1 2 3
- ICPC 0 1
- Asian 0 2 3
- Regional 1 2
- ShangHai 0 2
- 0 0
Sample Output
- 2
- 2
这是一对多的匹配,就是增广路改一改,改成num<limit时可以增广就行
如果group的匹配数小于当前要找的答案,那么就直接加入group的匹配集里,否则在匹配集里找可以增广的点修改
需要注意的是used数组,如果a->groupx->a就会无限调用,所以设置了一个used数组每次都清空,有点懒
- #include <iostream>
- #include <cstring>
- #include <vector>
- #include <sstream>
- #include <string>
- using namespace std;
- const int maxn=;
- int m,n;
- int num[maxn],cmp[maxn][maxn],used[maxn],tot;
- vector<int > G[maxn];
- void printg(){
- for(int i=;i<n;i++){
- for(int j=;j<G[i].size();j++){
- int t=G[i][j];
- cout<<"G["<<i<<"]["<<j<<"]:"<<t<<" ";
- }
- cout<<endl;
- }
- }
- bool fnd(int s,int limit){
- for(int i=;i<G[s].size();i++){
- int t=G[s][i];
- if(used[t])continue;
- used[t]=true;
- if(num[t]<limit){cmp[t][num[t]++]=s;return true;}
- for(int j=;j<num[t];j++){
- if(fnd(cmp[t][j],limit)){
- cmp[t][j]=s;
- return true;
- }
- }
- }
- return false;
- }
- bool hungry(int limit){
- tot=;
- memset(num,,sizeof(num));
- for(int i=;i<n;i++){
- memset(used,,sizeof(used));
- if(fnd(i,limit))tot++;
- }
- if(tot==n)return true;
- return false;
- }
- int getans(int s,int e){
- int mid=(s+e)/;
- if(hungry(mid)){
- return s==mid?mid:getans(s,mid);
- }
- return s==mid?e:getans(mid,e);
- }
- string buff,rbuff;
- int main(){
- cin.tie();
- ios::sync_with_stdio(false);
- stringstream ss;
- while(cin>>n>>m&&(n||m)){
- getline(cin,rbuff);
- for(int i=;i<n;i++){
- G[i].clear();
- getline(cin,rbuff);
- ss.clear();
- ss<<rbuff;
- ss>>buff;
- int t;
- while(ss>>t){
- t+=n;
- G[i].push_back(t);
- }
- }
- //printg();
- if(m==)cout<<<<endl;
- else {
- int ans=getans(n/m,n+);
- cout<<ans<<endl;
- }
- }
- return ;
- }
POJ 2289 Jamie's Contact Groups 二分图多重匹配 难度:1的更多相关文章
- POJ 2289——Jamie's Contact Groups——————【多重匹配、二分枚举匹配次数】
Jamie's Contact Groups Time Limit:7000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I ...
- POJ 2289 Jamie's Contact Groups(多重匹配+二分)
题意: Jamie有很多联系人,但是很不方便管理,他想把这些联系人分成组,已知这些联系人可以被分到哪个组中去,而且要求每个组的联系人上限最小,即有一整数k,使每个组的联系人数都不大于k,问这个k最小是 ...
- POJ2289 Jamie's Contact Groups —— 二分图多重匹配/最大流 + 二分
题目链接:https://vjudge.net/problem/POJ-2289 Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 6 ...
- Poj 2289 Jamie's Contact Groups (二分+二分图多重匹配)
题目链接: Poj 2289 Jamie's Contact Groups 题目描述: 给出n个人的名单和每个人可以被分到的组,问将n个人分到m个组内,并且人数最多的组人数要尽量少,问人数最多的组有多 ...
- POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups / HDU 1699 Jamie's Contact Groups / SCU 1996 Jamie's Contact Groups (二分,二分图匹配)
POJ 2289 Jamie's Contact Groups / UVA 1345 Jamie's Contact Groups / ZOJ 2399 Jamie's Contact Groups ...
- poj 2289 Jamie's Contact Groups【二分+最大流】【二分图多重匹配问题】
题目链接:http://poj.org/problem?id=2289 Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K ...
- POJ - 2289 Jamie's Contact Groups (二分图多重匹配)
题意:N个人,M个团体.每个人有属于自己的一些团体编号.将每个人分配到自己属于的团体中,问这个人数最多的团体其人数最小值是多少. 分析:一个一对多的二分图匹配,且是最大值最小化问题.二分图的多重匹配建 ...
- POJ 2289 Jamie's Contact Groups 【二分】+【多重匹配】(模板题)
<题目链接> 题目大意: 有n个人,每个人都有一个或者几个能够归属的分类,将这些人分类到他们能够归属的分类中后,使所含人数最多的分类值最小,求出该分类的所含人数值. 解题分析: 看到求最大 ...
- POJ 2289 Jamie's Contact Groups & POJ3189 Steady Cow Assignment
这两道题目都是多重二分匹配+枚举的做法,或者可以用网络流,实际上二分匹配也就实质是网络流,通过枚举区间,然后建立相应的图,判断该区间是否符合要求,并进一步缩小范围,直到求出解.不同之处在对是否满足条件 ...
随机推荐
- RS(纠删码)技术浅析及Python实现
前言 在Ceph和RAID存储领域,RS纠删码扮演着重要的角色,纠删码是经典的时间换空间的案例,通过更多的CPU计算,降低低频存储数据的存储空间占用. 纠删码原理 纠删码基于范德蒙德矩阵实现,核心公式 ...
- 分页器的js实现代码 bootstrap Paginator.js
参考: http://www.jb51.net/article/76093.htm 如前所述, 不要什么都想到 jquery的 脚本js, 应该首先推荐的是 css 和 元素本身的事件 函数 如: o ...
- jquery hover最后解决 - 不再疑惑 - 例子在这里
hover具有动画累计的bug, 可以使用 stop 或 filter(:not(:animated))来消除, 但是, 即使这样, 当鼠标反复滑入或滑出的时候, 虽然没有动画累计的问题, 但是 下面 ...
- 全球变暖|2018年蓝桥杯B组题解析第九题-fishers
标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. .. ...
- win7系统远程桌面无法正常连接
我的电脑--属性--远程设置:初步设置: 此外还需要确认服务是否开启
- Gym - 100345H Settling the Universe Up(bitset)
https://vjudge.net/problem/Gym-100345H 题意: 给出一个图,求图中u能到达v的对数,并且u<v.并且会有更新和查询操作. 思路: bitset直接暴力,对于 ...
- C#高级编程第10版 note
泛型接口的抗变和协变 https://www.cnblogs.com/yanfang/p/6635302.html ①泛型接口,如果泛型类型前没有关键字out或者in来标注,则该泛型接口不支持抗变和协 ...
- c++ primer plus 第四章 课后题答案
#include<iostream> #include<string> using namespace std; int main() { string first_name; ...
- .net常见框架
从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继 ...
- English trip M1 - PC12 I'd Like a Room Please Teacher:Taalan
In this lesson you will learn to say what you need. 在本课中,您将学习如何说出您的需求. Words list elevator 电梯 ...