题目链接

题意:给定一个矩阵,每列有两个白点,其它都是黑点,如今要求每列选一个白点,使得每一行至少包括一个白点被选中

思路:利用白点所在的位置用行指向列建图,用行去匹配列,最大匹配数假设不等于行数的话,就无解。

代码:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. const int MAXN = 1005;
  10.  
  11. vector<int> g[MAXN];
  12. int linker[MAXN];
  13. bool used[MAXN];
  14. int r, c;
  15.  
  16. bool dfs(int u) {
  17. for (int i = 0; i < g[u].size(); i++) {
  18. int v = g[u][i];
  19. if (!used[v]) {
  20. used[v] = true;
  21. if (linker[v] == -1 || dfs(linker[v])) {
  22. linker[v] = u;
  23. return true;
  24. }
  25. }
  26. }
  27. return false;
  28. }
  29.  
  30. int save[MAXN];
  31.  
  32. void hungary() {
  33. int res = 0;
  34. memset(linker, -1, sizeof(linker));
  35. for (int u = 1; u <= r; u++) {
  36. memset(used, false, sizeof(used));
  37. if (dfs(u)) res++;
  38. }
  39. if (res != r) {
  40. printf("NO\n");
  41. return;
  42. }
  43. for (int i = 1; i <= c; i++)
  44. printf("%d%c", linker[i] != -1 ? linker[i] : save[i], i == c ? '\n' : ' ');
  45. }
  46.  
  47. int main() {
  48. int cas;
  49. scanf("%d", &cas);
  50. while (cas--) {
  51. scanf("%d%d", &r, &c);
  52. for (int i = 1; i <= r; i++) g[i].clear();
  53.  
  54. int pos;
  55. for (int i = 1; i <= c; i++) {
  56. for (int j = 0; j < 2; j++) {
  57. scanf("%d", &pos);
  58. save[i] = pos;
  59. g[pos].push_back(i);
  60. }
  61. }
  62. hungary();
  63. }
  64. return 0;
  65. }

POJ1719- Shooting Contest(二分图最大匹配)的更多相关文章

  1. Shooting Contest 射击比赛 [POJ1719] [CEOI1997] [一题多解]

    Description(下有中文题意) Welcome to the Annual Byteland Shooting Contest. Each competitor will shoot to a ...

  2. POJ 1719 Shooting Contest(二分图匹配)

    POJ 1719 Shooting Contest id=1719" target="_blank" style="">题目链接 题意:给定一个 ...

  3. HDU1045(KB10-A 二分图最大匹配)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  4. poj 1719 Shooting Contest

    http://poj.org/problem?id=1719 Shooting Contest Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  5. HDU2389(KB10-F 二分图最大匹配Hopcroft_Karp)

    Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Java/Ot ...

  6. HDU2819(KB10-E 二分图最大匹配)

    Swap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. HDU4185(KB10-G 二分图最大匹配)

    Oil Skimming Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  9. poj 1719 Shooting Contest (二分匹配)

    Shooting Contest Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3812   Accepted: 1389 ...

随机推荐

  1. JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号

    大家好:       jeecg开源社区.现在正在进行"JAVA 开放源码的版本号项目微信公共账号"工作,有兴趣的朋友一起參与. 截止时间:20140510 採用技术: 1. JE ...

  2. FTP上传文件时 System.Net.WebException: 基础连接已经关闭: 接收时发生错误。

    在c#中使用HttpWebRequest时,频繁请求一个网址时,过段时间就会出现“基础连接已经关闭: 接收时发生意外错误”的错误提示.将webRequest的属性设置成下面的,经测试可以解决.Syst ...

  3. 调整CentOS的文字登陆界面的分辨率

    通过文字界面登陆到系统,切换到root权限. 用vi打开  /boot/grub/menu.lst 文件  ,因为menu.lst是grub.conf文件的快捷方式,终于打开的还是grub.conf文 ...

  4. SELECT 场 FROM 表 WHERE 字段 Like 条件

    间有关的条件,SQL它提供了四种匹配模式: 1.%: 表示随意0个或多个字符.可匹配随意类型和长度的字符.有些情况下若是中文,请使用两个百分号(%%)表示. 比方 SELECT * FROM [use ...

  5. iOS 自己主动布局教程

    springs和struts的问题 你肯定非常熟悉autosizing masks-也被觉得是springs&struts模式.autosizing mask决定了当一个视图的父视图大小改变时 ...

  6. newlisp 接受jenkins带空格的参数

    jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...

  7. 百度云BAE3.0 的ssh构造(本机ssh项目迁移到BAE3.0)

    依据百度云的java部署文档进行部署 http://developer.baidu.com/wiki/index.php?title=docs/cplat/bae/java 做例如以下改动,然后把项目 ...

  8. Sphinx/Coreseek 4.1 跑 buildconf.sh 一个错误,无法生成configure档

    安装前 coorseek 什么时候,遇到一些错误.该官方网站无法看到的解决方案,终于 google 在大牛的博客评论区找到一个解决方案.突然跑到他的膝盖介绍~~ 这里整理是为了方便一些人发现,墙毕竟让 ...

  9. Java 新特性(7) - Java EE 7 新特性

    http://www.ibm.com/developerworks/cn/java/j-lo-javaee7/ 新特性主要集中在: 1. 提高开发人员的生产力 2. 加强对 HTML5 动态可伸缩应用 ...

  10. asp.net mvc实现rest风格返回json

    实现类似:http://localhost:1799/rest/person/1方式返回一个json内容: 在asp.net mvc中新建一个control rest,然后在其中新增方法: publi ...