要点

  • 发现每行每列都得有1
  • 发现无论怎么换,在同一行的永远在同一行,同一列的永远在同一列
  • 于是换行貌似没什么用啊,换列就够了。换列无法做到则无答案
  • 于是变成了行与列进行二分匹配
#include <cstdio>
#include <cstring> int T, n, a[205][205];
int match[205], vis[205]; bool dfs(int x) {
for (int i = 1; i <= n; i++)
if (!vis[i] && a[x][i]) {
vis[i] = 1;
if (!match[i] || dfs(match[i])) {
match[i] = x; return 1;
}
}
return 0;
} bool Solve() {
memset(match, 0, sizeof match);
for (int i = 1; i <= n; i++) {
memset(vis, 0, sizeof vis);
if (!dfs(i)) return 0;
}
return 1;
} int main() {
for (scanf("%d", &T); T; T--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
puts(Solve() ? "Yes" : "No");
}
}

最新文章

  1. Spring 学习笔记 8. 尚硅谷_佟刚_Spring_使用外部属性文件
  2. 关于c++操作符的优先级
  3. Makefile 中:= ?= += =的区别
  4. Integer
  5. swift函数的用法,及其嵌套实例
  6. 《ASP.NET1200例》各种类型文件汇总
  7. String.Join 和 Distinct 方法 去除字符串中重复字符
  8. Android之View.onMeasure方法
  9. poj 2762 Going from u to v or from v to u?
  10. 应用按home键无最近应用
  11. A Bit Of Knowledge
  12. 桌面应用框架 OneRing
  13. CSS设置图片居中的方法
  14. Docker学习总结(一)
  15. c# post basic 接口
  16. The Network Adapter could not establish the connection
  17. 好用的Quartz管理器类
  18. hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)
  19. 原生javascript封装的函数
  20. C# 执行CMD命令的方法

热门文章

  1. matlab之mean()函数
  2. JavaScript(4)
  3. T59
  4. linux命令学习笔记(54):ping命令
  5. xxx referenced from: xxx in xxx.o
  6. 集训Day9
  7. 创建maven多模块项目
  8. Vue项目屏幕自适应方案
  9. MVC之一、预备知识储备
  10. 八 Vue学习 fetch请求