注意到怎么换都行,但是如果把某个黑方块用在对角线上,它原来所在的行列的的黑方块就都不能用

所以要选出n组不重的行列组合,这里用匈牙利算法做二分图匹配即可(用了时间戳优化)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. const int N=405;
  6. int T,n,cnt,h[N],lk[N],v[N],ti;
  7. struct qwe
  8. {
  9. int ne,to;
  10. }e[N*N];
  11. int read()
  12. {
  13. int r=0,f=1;
  14. char p=getchar();
  15. while(p>'9'||p<'0')
  16. {
  17. if(p=='-')
  18. f=-1;
  19. p=getchar();
  20. }
  21. while(p>='0'&&p<='9')
  22. {
  23. r=r*10+p-48;
  24. p=getchar();
  25. }
  26. return r*f;
  27. }
  28. void add(int u,int v)
  29. {
  30. cnt++;
  31. e[cnt].ne=h[u];
  32. e[cnt].to=v;
  33. h[u]=cnt;
  34. }
  35. bool dfs(int u)
  36. {
  37. for(int i=h[u];i;i=e[i].ne)
  38. if(v[e[i].to]!=ti)
  39. {
  40. v[e[i].to]=ti;
  41. if(!lk[e[i].to]||dfs(lk[e[i].to]))
  42. {
  43. lk[e[i].to]=u;
  44. return 1;
  45. }
  46. }
  47. return 0;
  48. }
  49. int main()
  50. {
  51. T=read();
  52. while(T--)
  53. {
  54. cnt=0;ti=0;
  55. memset(h,0,sizeof(h));
  56. memset(v,0,sizeof(v));
  57. memset(lk,0,sizeof(lk));
  58. n=read();
  59. for(int i=1;i<=n;i++)
  60. for(int j=1;j<=n;j++)
  61. {
  62. int x=read();
  63. if(x)
  64. add(i,j);
  65. }
  66. int con=0;
  67. for(int i=1;i<=n;i++)
  68. {
  69. ti++;
  70. if(dfs(i))
  71. con++;
  72. }
  73. if(con==n)
  74. puts("Yes");
  75. else
  76. puts("No");
  77. }
  78. return 0;
  79. }

bzoj 1059: [ZJOI2007]矩阵游戏【匈牙利算法】的更多相关文章

  1. BZOJ 1059: [ZJOI2007]矩阵游戏 匈牙利算法

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2351  Solved: 1156 题目连接 http:// ...

  2. bzoj 1059 [ZJOI2007]矩阵游戏——匈牙利算法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1059 发现不管怎么换,同一列的元素还是在同一列,同一行的元素还是在同一行. 所以必要条件是每 ...

  3. BZOJ 1059: [ZJOI2007]矩阵游戏( 匈牙利 )

    只要存在N个x, y坐标均不相同的黑格, 那么就一定有解. 二分图匹配, 假如最大匹配=N就是有解的, 否则无解 ------------------------------------------- ...

  4. bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1891  Solved: 919[Submit][Statu ...

  5. BZOJ 1059 [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2707  Solved: 1322[Submit][Stat ...

  6. bzoj 1059 [ZJOI2007]矩阵游戏(完美匹配)

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2993  Solved: 1451[Submit][Stat ...

  7. BZOJ 1059 [ZJOI2007]矩阵游戏 (二分图最大匹配)

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5281  Solved: 2530[Submit][Stat ...

  8. bzoj 1059: [ZJOI2007]矩阵游戏 [二分图][二分图最大匹配]

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行 ...

  9. BZOJ 1059 [ZJOI2007]矩阵游戏:二分图匹配

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 题意: 给你一个n*n的01矩阵. 你可以任意次地交换某两行或某两列. 问你是否可以 ...

随机推荐

  1. SSM java.lang.NullPointerException

    如上图所示的异常 原来是少了这个东西,加上就好了

  2. 洛谷 P2285 BZOJ 1207 [HNOI2004]打鼹鼠

    题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气. ...

  3. EditText实时监测内容

    editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequ ...

  4. hdu - 1104 Remainder (bfs + 数论)

    http://acm.hdu.edu.cn/showproblem.php?pid=1104 注意这里定义的取模运算和计算机的%是不一样的,这里的取模只会得到非负数. 而%可以得到正数和负数. 所以需 ...

  5. codevs——1080 线段树练习

    1080 线段树练习  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 一行N个方格,开始每个格子里都有 ...

  6. java IO流之三 使用缓冲流来读写文件

    原文:http://blog.csdn.net/haluoluo211/article/details/52183219 一.通过BufferedReader和BufferedWriter来读写文件 ...

  7. win7开启超级管理员账户(Administrator)

    win7开启超级管理员账户(Administrator) 不同于XP系统,Windows7系统据说出于安全的考虑,将超级管理员帐户"Administrator"在登陆界面给隐藏了, ...

  8. jqury-validate表单验证

    首先需要引入插件:jquery.validate.js这个插件. 然后对需要验证的表单实现js: $("#add-firewalls-form").validate({ submi ...

  9. HTTP请求库——axios源码阅读与分析

    概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...

  10. Fragment进阶(五)-----&gt;监听fragment回退事件

    activity_main.xml <? xml version="1.0" encoding="utf-8"?> <LinearLayout ...