传送门

Description

Input

Output

Sample Input

2

2

0 0

0 1

3

0 0 1

0 1 0

1 0 0

Sample Output

No

Yes

HINT

Solution

经简单证明可知原题等价于给你一些黑色格子,问能否选出n个,使得每行、每列有且仅有一个黑色格子

那么直接对黑色格子的行列连边跑最小点覆盖

Code

  1. //By Menteur_Hxy
  2. #include <vector>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <cstdlib>
  6. #include <iostream>
  7. #include <algorithm>
  8. #define F(i,a,b) for(register int i=(a);i<=(b);i++)
  9. #define E(i,u) for(register int i=head[u];i;i=nxt[i])
  10. #define ins(a,b,c) add(a,b,c),add(b,a,0)
  11. #define add(a,b,c) nxt[++cnt]=head[a],to[cnt]=b,cst[cnt]=c,head[a]=cnt
  12. using namespace std;
  13. int read() {
  14. int x=0,f=1; char c=getchar();
  15. while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();}
  16. while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar();
  17. return x*f;
  18. }
  19. const int N=2010,INF=0x3f3f3f3f;
  20. int n,S,T,cnt;
  21. int nxt[N*N],to[N*N],cst[N*N],head[N<<1],cur[N<<1];
  22. int que[N<<1],dis[N<<1];
  23. bool bfs() {
  24. memset(dis,0,sizeof(dis));
  25. int h=0,t=1; que[++h]=S; dis[S]=1;
  26. while(h<=t) {
  27. int u=que[h++];
  28. // cout<<u<<" "<<dis[u]<<endl;
  29. E(i,u) if(!dis[to[i]]&&cst[i]>0)
  30. dis[to[i]]=dis[u]+1,que[++t]=to[i];
  31. }
  32. return dis[T];
  33. }
  34. int dfs(int u,int flow) {
  35. if(u==T) return flow;
  36. int used=0;
  37. for(register int &i=cur[u],v;i;i=nxt[i]) {
  38. // cout<<u<<" "<<to[i]<<" "<<cst[i]<<" "<<dis[to[i]]<<" "<<dis[u]<<endl;
  39. if(cst[i]>0&&dis[(v=to[i])]==dis[u]+1) {
  40. int tmp=dfs(v,min(flow-used,cst[i]));
  41. cst[i]-=tmp,cst[i^1]+=tmp;
  42. used+=tmp; if(used==flow) return flow;
  43. }
  44. }
  45. if(!used) dis[u]=-1;
  46. return used;
  47. }
  48. int dinic() {
  49. int res=0;
  50. while(bfs()) {
  51. F(i,0,T) cur[i]=head[i];
  52. res+=dfs(S,INF);
  53. }
  54. return res;
  55. }
  56. int main() {
  57. int cas=read();
  58. while(cas--) {
  59. n=read(); S=0,T=(n<<1|1),cnt=1;
  60. memset(head,0,sizeof(head));
  61. F(i,1,n) ins(S,i,1); F(i,1,n) ins(i+n,T,1);
  62. F(i,1,n) F(j,1,n) if(read()) ins(i,j+n,1);
  63. int res=dinic();
  64. if(res==n) puts("Yes");
  65. else puts("No");
  66. }
  67. return 0;
  68. }

[luogu1129 ZJOI2007] 矩阵游戏 (二分图最大匹配)的更多相关文章

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

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

  2. 【bzoj1059】[ZJOI2007]矩阵游戏 二分图最大匹配

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

  3. BZOJ [ZJOI2007]矩阵游戏(二分图匹配)

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

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

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

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

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

  6. [bzoj1059] [ZJOI2007] 矩阵游戏 (二分图匹配)

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

  7. BZOJ1059 [ZJOI2007]矩阵游戏 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1059 题意概括 有一个n*n(n<=200)的01矩阵,问你是否可以通过交换整行和整列使得左 ...

  8. P1129 [ZJOI2007]矩阵游戏 二分图匹配

    思路:脑子+二分图匹配 提交:1次(课上讲过) 题解: 发现:如果符合题意,那么行和列一定是一一匹配的(必要条件),所以最大匹配必须是$n$. 同时我们发现,一定可以通过交换行列的方式,将(看起来)有 ...

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

    https://www.lydsy.com/JudgeOnline/problem.php?id=1059 裸的二分图匹配,行列匹配即可 /****************************** ...

随机推荐

  1. swift 雨燕 新手教程

    Apple Swift编程语言新手教程 chox 2014-06-03 文件夹 简单介绍 入门 简单值 控制流 函数与闭包 对象与类 枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swif ...

  2. 01背包--小P寻宝记——粗心的基友

    题目描写叙述 这对好基友他们在经历无数的艰难险阻后.最终找到了宝藏.无奈的是这一对好基友居然是一样的粗心,又忘记了带一个大一点的包包,可惜啊..选择又出现了啊.. 已知包的体积是v,每种宝贝仅仅有一种 ...

  3. 【Java并发编程实战】—– AQS(四):CLH同步队列

    在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形. 其主要从双方面进行了改造:节点的结构与节点等待机制.在结构上引入了 ...

  4. postgresql数据库psql控制台操作命令

    登录postgresql数据库控制台 psql 数据库名 登录成功显示 [zpf@kevin ~]$ psql postgres psql (9.4.1) Type "help" ...

  5. BeanUtils使用案例

     1.BeanUtils框架/工具(APACHE开源组织开发)    (1)BeanUtils框架可以完毕内省的一切功能.并且优化    (2)BeanUtils框架可以对String<-> ...

  6. jQery总结01

    1 jQuery 的基本语法结构是什么? 2 $(document).ready() 与 window.onload 有什么区别? 3 如何实现 DOM 对象和 jQuery对象间的转化?

  7. 虚函数的特点就是执行的时候会下降到子类去执行同名覆盖函数 good

    var t: TBitBtn;begin t:=TBitBtn.Create(nil); t.Name:='BitBtn100'; t.parent :=Self; // 这里下断点end; 一路跟踪 ...

  8. nyoj--496--巡回赛(拓扑排序)

    巡回赛 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 世界拳击协会(WBA)是历史最悠久的世界性拳击组织,孕育了众多的世界冠军,尤其是重量级,几乎造就了大家耳熟能详的所 ...

  9. Coursera Algorithms week3 快速排序 练习测验: Nuts and bolts

    题目原文: Nuts and bolts. A disorganized carpenter has a mixed pile of n nuts and n bolts. The goal is t ...

  10. Gym - 101981J The 2018 ICPC Asia Nanjing Regional Contest J.Prime Game 计数

    题面 题意:1e6的数组(1<a[i]<1e6),     mul (l,r) =l × (l+1) ×...× r,  fac(l,r) 代表 mul(l,r) 中不同素因子的个数,求s ...