http://acm.hdu.edu.cn/showproblem.php?pid=2819

这道题乍一看是矩阵变换题,估计用矩阵之类的也可以做

但是分析一下就可以知道

要凑成对角线都是1,题目允许行变换和列变换

然而观察可以得知如果可以完成只需要行变换或者列变换之一即可

donser[i][j]=1表示i,j位置有1,那么只需要变换j到i(即交换i,j行)

输出中间过程用queue

加上dfs遍历即可

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. #include<cstring>
  5. using namespace std;
  6. int donser[][];
  7. bool used[];
  8. int leave[],a[],b[];
  9. int M,num,abc,j;
  10. queue<int >que;
  11. void swap(int i,int j)
  12. {
  13. int t=leave[i];leave[i]=leave[j];leave[j]=t;
  14. }
  15. int dfs(int x)
  16. {
  17. for(int i=;i<=M;i++)
  18. {
  19. if(donser[x][i]&&!used[i])
  20. {
  21. used[i]=true;
  22. if(!leave[i]||dfs(leave[i]))
  23. {
  24. leave[i]=x;
  25. return ;
  26. }
  27.  
  28. }
  29. }
  30. return ;
  31. }
  32. int main()
  33. {
  34. while(~scanf("%d",&M))
  35. {
  36. memset(donser,,sizeof(donser));
  37. memset(leave,,sizeof(leave));
  38. for(int i=;i<=M;i++)
  39. {
  40. for(j=;j<=M;j++)
  41. {
  42. scanf("%d",&num);
  43. if(num) {donser[i][j]=;}
  44. }
  45. }
  46. num=abc=;
  47. for(int i=;i<=M;i++)
  48. {
  49. memset(used,,sizeof(used));
  50. if(dfs(i)){abc++;}
  51. }
  52. if(abc!=M) {cout<<"-1"<<endl;continue;}
  53. abc=,j=;
  54. for(int i=;i<=M;i++)
  55. {
  56. for(j=;j<=M && leave[j]!=i ;j++);
  57. if(i!=j)
  58. {
  59. abc++;
  60. que.push(i);
  61. que.push(j);
  62. swap(i,j);
  63. }
  64. }
  65. cout<<abc<<endl;
  66. while(!que.empty())
  67. {
  68. cout<<"C "<<que.front();
  69. que.pop();
  70. cout<<" "<<que.front()<<endl;
  71. que.pop();
  72. }
  73. abc=;
  74. }
  75. return ;
  76. }

HDU 2819 隐式二分图匹配的更多相关文章

  1. HDU 2819 Swap(二分图匹配)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2819 [题目大意] 给出一个棋盘,由白格子和黑格子组成,可以交换棋盘的行列, 使得其主对角线为黑格 ...

  2. Android隐式启动匹配:action,category,data

    简介 Android开发中,Activity,Service 和 BroadcastReceiver 启动有两种方式,显示启动和隐式启动. 为方便下面描述,我以Activity启动为例. 显示启动便是 ...

  3. HDU 1083 网络流之二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...

  4. hdu 5727 Necklace dfs+二分图匹配

    Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...

  5. HDU 5727 Necklace(二分图匹配)

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5727 [题目大意] 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,已知有些阴珠子和阳 ...

  6. Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件

    一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...

  7. hdu 5943(素数间隔+二分图匹配)

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  8. HDU 5727 - Necklace - [全排列+二分图匹配][Hopcroft-Karp算法模板]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 Problem DescriptionSJX has 2*N magic gems. ...

  9. hdu - 1150 Machine Schedule (二分图匹配最小点覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两种机器,A机器有n种模式,B机器有m种模式,现在有k个任务需要执行,没切换一个任务机器就需要重启一次, ...

随机推荐

  1. MyISAM 和InnoDB 区别 转

    MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理 ...

  2. 自然语言18_Named-entity recognition

    https://en.wikipedia.org/wiki/Named-entity_recognition http://book.51cto.com/art/201107/276852.htm 命 ...

  3. JSP简单标签开发

    一.继承自SimpleTag接口的自定义标签实现类称为简单标签,接口中5个方法 1.setJspContext方法 用于把JSP页面的PageContext对象传递给标签处理器对象 2.setPare ...

  4. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【九】——API变了,客户端怎么办?

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 一旦我们将API发布之后,消费者就会开始使用并和其他的一些数据混在一起.然而,当新的需求出现 ...

  5. hdu 1873 看病要排队(优先级队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.I ...

  6. 通过XHR  API来下载和上传图片

    1.不用HTML中的img标签来下载图片,通过XHR  api来下载图片: var xhr = new XMLHttpRequest(); xhr.open('GET','/img/tooth-int ...

  7. 跟我一起玩转Sencha Touch 移动 WebApp 开发(一)

    1.目录 移动框架简介,为什么选择Sencha Touch? 环境搭建 创建项目框架,框架文件简介 创建简单Tabpanel案例 自定义图标的方式 WebApp产品测试和发布 HTML5离线缓存 发布 ...

  8. jquery特效收藏

    js网址收藏: 懒人图库:www.lanrentuku.com 懒人之家:http://www.lanrenzhijia.com/jquery/list_5_2.html 1.UI下载:http:// ...

  9. System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。

    System.BadImageFormatException : 未能加载文件或程序集“xxxxx.xxxxx, Version=1.0.0.0, Culture=neutral, PublicKey ...

  10. 无忧之道:Docker中容器的备份、恢复和迁移

    原创:LCTT https://linux.cn/article-5967-1.html译者: GOLinux本文地址:https://linux.cn/article-5967-1.html 201 ...