题意:矩阵游戏在一个N*N黑白方阵进行。每次可以对该矩阵进行两种操作:

行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)

列交换操作:选择矩阵的任意行列,交换这两列(即交换对应格子的颜色)

游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。

要求判断是否有解

n<=200

思路:原先同行或同列的格子后依旧同行或同列

转化为是否能找到n个行列互不相同的点

行列建边后跑二分图最大匹配即可

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair
#define N 110000
#define M 410000
#define eps 1e-8
#define pi acos(-1)
#define oo 1e9
int head[N],vet[N],nxt[N],match[N],flag[N],tot; void add(int a,int b)
{
nxt[++tot]=head[a];
vet[tot]=b;
head[a]=tot;
} int dfs(int u)
{
flag[u]=;
int e=head[u];
while(e)
{
int v=vet[e];
if(!match[v]||!flag[match[v]]&&dfs(match[v]))
{
match[v]=u;
return ;
}
e=nxt[e];
}
return ;
} int main()
{
int cas;
scanf("%d",&cas);
while(cas--)
{
int n;
scanf("%d",&n);
memset(head,,sizeof(head));
memset(match,,sizeof(match));
tot=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
int x;
scanf("%d",&x);
if(x) add(i,j);
}
int ans=;
for(int i=;i<=n;i++)
{
memset(flag,,sizeof(flag));
if(dfs(i)) ans++;
}
//printf("%d\n",ans);
if(ans==n) printf("Yes\n");
else printf("No\n");
}
return ;
}

最新文章

  1. canvas 画圈 demo
  2. Java 内部类的阐述
  3. Python一点注意
  4. 使用JavaScript判断用户是否为手机设备
  5. [水煮 ASP.NET Web API 2 方法论] 目 录
  6. Poj 3233 Matrix Power Series(矩阵二分快速幂)
  7. The first day of HTML
  8. Flex设置外部浏览器
  9. Linux 文件系统 相关
  10. [Webpack] Use the Webpack Dashboard to Monitor Webpack Operations
  11. KISSY学习笔记(更新中)
  12. Oracle数据库之PL/SQL过程与函数
  13. linux使用进阶(一)
  14. js实现复制内容
  15. 【Objective-C 基础】4.分类和协议
  16. [Luogu3527][POI2011]MET-Meteors
  17. I/O基础之概念
  18. mysql分组(五)
  19. [CF536D]Tavas in Kansas
  20. 【html+css3】在一张jpg图片上,显示多张透明的png图片

热门文章

  1. 01_1_准备ibatis环境
  2. Linux安装项目管理工具禅道出现的一些问题
  3. mysql关联查询
  4. MySQL 自学笔记_Union(组合查询)
  5. 购物车小程序(while循环,列表)
  6. python-numpy-pandas
  7. python面试题之python多线程与多进程的区别
  8. 解决oh-my-zsh卡顿问题
  9. Python学习笔记:面向对象(类)
  10. CodeForces 543D 树形DP Road Improvement