UESTC_Big Brother 2015 UESTC Training for Graph Theory<Problem G>
G - Big Brother
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
现在有n个囚笼,需要关押m个犯人,the big brother很担心囚笼的安全性,因为犯人都有自己的想法,他们只想住在特定的囚笼里面,那么big brother想知道最多 能关押多少个犯人,每个囚笼只能关押一个犯人,一个犯人也只能关押在一个囚笼里面。
Input
第一行 两个整数,N(0≤N≤200) 和 M(0≤M≤200) 。N 是犯人的数量,M 是囚笼的数量。
第二行到第N+1行 一共 N 行,每行对应一只犯人。第一个数字 (Si) 是这哥犯人愿意待的囚笼的数量 (0≤Si≤M)。后面的Si个数表示这些囚笼的编号。
囚笼的编号限定在区间 (1..M) 中,在同一行,一个囚笼不会被列出两次。
Output
只有一行。输出一个整数,表示最多能分配到的囚笼的数量.
Sample input and output
| Sample Input | Sample Output |
|---|---|
5 5 |
5 |
解题报告:
这是一道二分图匹配题目,可以使用匈牙利匹配算法,也可以使用网络流来做,我在这里使用的是网络流ek算法,即建容量为1的边,创建一个虚拟开始结点,和虚拟结束结点.
跑一次最大流即可
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cstdio> using namespace std;
const int maxn = + ;
const int inf = << ;
int c[maxn*][maxn*],f[maxn*][maxn*],n,m,p[maxn*],pre[maxn*];
queue<int>q; int ek(int s,int t)
{
int flow = ;
while()
{
memset(p,,sizeof(p));
pre[s] = ;
p[s] = inf;
q.push(s);
while(!q.empty())
{
int x = q.front();q.pop();
for(int i = ; i <= n + m + ; ++ i)
if (!p[i] && f[x][i] < c[x][i])
{
p[i] = min(p[x],c[x][i] - f[x][i]);
pre[i] = x;
q.push(i);
}
}
if (!p[t])
break;
flow += p[t];
int k = t;
while(k)
{
f[pre[k]][k] += p[t];
f[k][pre[k]] -= p[t];
k = pre[k];
}
}
return flow;
} int main(int argc,char *argv[])
{
scanf("%d%d",&n,&m);
memset(c,,sizeof(c));
memset(f,,sizeof(f));
for(int i = ; i <= n ; ++ i)
{
int s,v;
scanf("%d",&s);
while(s--)
{
scanf("%d",&v);
c[i][v+n] = ;
}
}
for(int i = ; i <= n ; ++ i)
c[n+m+][i] = ;
for(int i = ; i <= m ; ++ i)
c[i+n][n+m+] = ;
printf("%d\n",ek(n+m+,n+m+));
return ;
}
UESTC_Big Brother 2015 UESTC Training for Graph Theory<Problem G>的更多相关文章
- UESTC_方老师和农场 2015 UESTC Training for Graph Theory<Problem L>
L - 方老师和农场 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_王之盛宴 2015 UESTC Training for Graph Theory<Problem K>
K - 王之盛宴 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UESTC_小panpan学图论 2015 UESTC Training for Graph Theory<Problem J>
J - 小panpan学图论 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) S ...
- UESTC_排名表 2015 UESTC Training for Graph Theory<Problem I>
I - 排名表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- UESTC_韩爷的情书 2015 UESTC Training for Graph Theory<Problem H>
H - 韩爷的情书 Time Limit: 6000/2000MS (Java/Others) Memory Limit: 262144/262144KB (Java/Others) Subm ...
- UESTC_传输数据 2015 UESTC Training for Graph Theory<Problem F>
F - 传输数据 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UESTC_树上的距离 2015 UESTC Training for Graph Theory<Problem E>
E - 树上的距离 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 262143/262143KB (Java/Others) Subm ...
- UESTC_邱老师的脑残粉 2015 UESTC Training for Graph Theory<Problem D>
D - 邱老师的脑残粉 Time Limit: 12000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Sub ...
- UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory<Problem C>
C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
随机推荐
- HDU 5428 The Factor (素因数分解)
题意:给出n个数,问这n个数的乘积中至少有三个因子的最小因子.若不存在这样的因子,则输出 -1: 思路:求出每个数的最小的两个素因数,然后输出其中最小的两个数的乘积. 代码: #include< ...
- POJ 2752 Seek the Name, Seek the Fame (KMP next 数组 变形)
题意:给一个字符串S,判断在什么下标的时候,前缀和后缀相等,输出前缀和后缀相等的点. 分析:next数组的一种很巧妙的用法 next数组表示的意义是当前下标前面k字符和开头的前面k个字符相等 所以就会 ...
- UVa133.The Dole Queue
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- LVM(1)
DM: DM: Device Mapper 逻辑设备 RAID, LVM2 DM: LVM2 快照 多路径
- hdu 4908 BestCoder Sequence
# include <stdio.h> # include <algorithm> using namespace std; int main() { int n,m,i,su ...
- LDA-线性判别分析(三)
本来是要调研 Latent Dirichlet Allocation 的那个 LDA 的, 没想到查到很多关于 Linear Discriminant Analysis 这个 LDA 的资料.初步看了 ...
- Dynamics CRM2013 missing prvReadComplexControl privilege
左右ComplexControl 权限设置,SDK例如,在以下的说明,仅供内部使用的实体,但是你可以没有找到这个叫配置安全角色ComplexControl的东西的. 在msdn上面查下就会发现这么一段 ...
- NET中级课--文件,流,序列化1
1.对于机器的角度来看,任何文件都是二进制的0和1. 2. 位:bit,一个1或0就是1位. 字节:byte,每8位一个字节.一个字节的范围就是00000000到1111111,换成10进制就是0 ...
- 移动开发(webapp)过程中的小细节总结
1.阻止旋转屏幕时自动调整字体大小 html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 { -webkit-text-size-adj ...
- parseInt引发的血案
今天做了个专题活动,页面头上有个倒计时 专题做完后上线了,没发现有什么问题,结果,运营MM突然和我说:技术哥哥出问题了,360浏览器在秒数从10到09的时候直接变成 00 了! 一看我去真的,该死的3 ...