G - Big Brother

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

现在有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
  1. 5 5
  2. 1 1
  3. 1 2
  4. 1 3
  5. 1 4
  6. 1 5
  1. 5

解题报告:

这是一道二分图匹配题目,可以使用匈牙利匹配算法,也可以使用网络流来做,我在这里使用的是网络流ek算法,即建容量为1的边,创建一个虚拟开始结点,和虚拟结束结点.

跑一次最大流即可

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <queue>
  5. #include <cstdio>
  6.  
  7. using namespace std;
  8. const int maxn = + ;
  9. const int inf = << ;
  10. int c[maxn*][maxn*],f[maxn*][maxn*],n,m,p[maxn*],pre[maxn*];
  11. queue<int>q;
  12.  
  13. int ek(int s,int t)
  14. {
  15. int flow = ;
  16. while()
  17. {
  18. memset(p,,sizeof(p));
  19. pre[s] = ;
  20. p[s] = inf;
  21. q.push(s);
  22. while(!q.empty())
  23. {
  24. int x = q.front();q.pop();
  25. for(int i = ; i <= n + m + ; ++ i)
  26. if (!p[i] && f[x][i] < c[x][i])
  27. {
  28. p[i] = min(p[x],c[x][i] - f[x][i]);
  29. pre[i] = x;
  30. q.push(i);
  31. }
  32. }
  33. if (!p[t])
  34. break;
  35. flow += p[t];
  36. int k = t;
  37. while(k)
  38. {
  39. f[pre[k]][k] += p[t];
  40. f[k][pre[k]] -= p[t];
  41. k = pre[k];
  42. }
  43. }
  44. return flow;
  45. }
  46.  
  47. int main(int argc,char *argv[])
  48. {
  49. scanf("%d%d",&n,&m);
  50. memset(c,,sizeof(c));
  51. memset(f,,sizeof(f));
  52. for(int i = ; i <= n ; ++ i)
  53. {
  54. int s,v;
  55. scanf("%d",&s);
  56. while(s--)
  57. {
  58. scanf("%d",&v);
  59. c[i][v+n] = ;
  60. }
  61. }
  62. for(int i = ; i <= n ; ++ i)
  63. c[n+m+][i] = ;
  64. for(int i = ; i <= m ; ++ i)
  65. c[i+n][n+m+] = ;
  66. printf("%d\n",ek(n+m+,n+m+));
  67. return ;
  68. }

UESTC_Big Brother 2015 UESTC Training for Graph Theory<Problem G>的更多相关文章

  1. UESTC_方老师和农场 2015 UESTC Training for Graph Theory<Problem L>

    L - 方老师和农场 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  2. UESTC_王之盛宴 2015 UESTC Training for Graph Theory<Problem K>

    K - 王之盛宴 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  3. 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 ...

  4. UESTC_排名表 2015 UESTC Training for Graph Theory<Problem I>

    I - 排名表 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  5. UESTC_韩爷的情书 2015 UESTC Training for Graph Theory<Problem H>

    H - 韩爷的情书 Time Limit: 6000/2000MS (Java/Others)     Memory Limit: 262144/262144KB (Java/Others) Subm ...

  6. UESTC_传输数据 2015 UESTC Training for Graph Theory<Problem F>

    F - 传输数据 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  7. UESTC_树上的距离 2015 UESTC Training for Graph Theory<Problem E>

    E - 树上的距离 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 262143/262143KB (Java/Others) Subm ...

  8. UESTC_邱老师的脑残粉 2015 UESTC Training for Graph Theory<Problem D>

    D - 邱老师的脑残粉 Time Limit: 12000/4000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Sub ...

  9. UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory<Problem C>

    C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

随机推荐

  1. 【转】Android出现“Read-only file system”解决办法

    原文网址:http://www.111cn.net/sj/android/44496.htm 下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友 ...

  2. tyvj1297 小气的小B

    描述 其实你们都不知道,小B是很小气的.一天小B带着他的弟弟小B'一起去摘果子,走着走着,他们忽然发现了一颗长满了果子的树.由于弟弟长得太矮了,弟弟只有让哥哥小B帮他摘一些果子下来.哥哥小B说:&qu ...

  3. poj2242

                                                        The Circumference of the Circle Time Limit: 1000 ...

  4. HTTP缓存 1.0 vs 1.1

    在“使用ETag跟踪用户”中有一点被忽略了,因为要用这张小图统计统计uv, 所以要求浏览器必须每次都要发送这个图片的请求.这需要服务器对图片的缓存策略做设置. http/1.0 和 http/1.1 ...

  5. LinqToXML~读XML文件续

    上篇文章读了如何通过linq to xml去读取XML文件,而这讲主要通过linq to xml来读取由属性组件的XML文件,例如读取一个web.config的XML格式的配置文件,下面是config ...

  6. MATLAB快速注释方法

    觉得有用,未免以后忘记,收藏了.原文来自:http://i.azpala.com/2008/09/18/matlab-multi-line-comment/ A. %{ 若干语句 %} B. 多行注释 ...

  7. App签名--- Android

    步骤: 下面就Next即可

  8. django中的Model模型一:

    在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架 ...

  9. Entity Framework 6.1-Code First【转】

      Entity Framework 6.1-Code First 分类: Entity Framework 2014-04-21 14:56 2034人阅读 评论(0) 收藏 举报 entityen ...

  10. C#线程池ThreadPool的理解

    在多线程编程中,线程的创建和销毁是非常消耗系统资源的,因此,C#引入了池的概念,类似的还有数据库连接池,这样,维护一个池,池内维护的一些线程,需要的时候从池中取出来,不需要的时候放回去,这样就避免了重 ...