正题

题目链接:https://www.luogu.com.cn/problem/P1129


题目大意

n∗mn*mn∗m的网格上有0/10/10/1,可以选择交换两行或两列,求能否让对角线上全是111。


解题思路

因为可以交换,所以是每一行都要和每一列配对。而第iii行能够和第jjj列配对的条件是(i,j)(i,j)(i,j)这个格子上有111,然后跑网络流最大匹配即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=210*210,inf=2147483647/3;
struct node{int to,next,w;
}a[N*2];
int T,n,s,t,tot,dep[N],ls[N],ans;
queue<int> q;
void addl(int x,int y,int w){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;return;
}
bool bfs(){memset(dep,0,sizeof(dep));dep[s]=1;while(!q.empty())q.pop();q.push(s);while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(dep[y]||!a[i].w)continue;dep[y]=dep[x]+1;if(y==t)return 1;q.push(y);}}return 0;
}
int dinic(int x,int flow){int rest=0,k;if(x==t)return flow;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(dep[x]+1!=dep[y]||!a[i].w)continue;rest+=(k=dinic(y,min(flow-rest,a[i].w)));a[i].w-=k;a[i^1].w+=k;if(rest==flow)return flow;}if(!rest)dep[x]=0;return rest;
}
int main()
{scanf("%d",&T);while(T--){tot=1;ans=0;memset(ls,0,sizeof(ls));scanf("%d",&n);s=2*n+1;t=s+1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int w;scanf("%d",&w);if(w)addl(i,j+n,1);}for(int i=1;i<=n;i++)addl(s,i,1),addl(i+n,t,1);while(bfs())ans+=dinic(s,inf);if(ans==n)printf("Yes\n");else printf("No\n");}return 0;
}

P1129-[ZJOI2007]矩阵游戏【最大匹配】相关推荐

  1. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  2. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  3. 洛谷:P1129 [ZJOI2007] 矩阵游戏

    题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...

  4. 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)

    https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...

  5. 洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)

    洛谷:矩阵游戏 洛谷题解就挺好 目的是使得最终(1,1)(2,2)-(n,n)都有一个点 可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配 建图方式:对于 i 行 j 列的1点,建一条 i ...

  6. P1129 [ZJOI2007]矩阵游戏 (匈牙利算法)

    传送门 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个n×n \timesn×n黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次 ...

  7. P1129 [ZJOI2007] 矩阵游戏

    文章目录 R e s u l t Result Result H y p e r l i n k Hyperlink Hyperlink D e s c r i p t i o n Descripti ...

  8. bzoj1059: [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4748  Solved: 2264 [Submit][St ...

  9. bzoj 1059: [ZJOI2007]矩阵游戏(二分匹配)

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4762  Solved: 2269 [Submit][St ...

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

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

最新文章

  1. 计算某个时间距离现在_计算成像amp;深度学习(1)
  2. Js获取下拉框选定项的值和文本
  3. TCP/IP详解笔记----第一章:概述
  4. Java工作笔记-Java函数参传值传引用问题
  5. Python学习笔记之类(一)
  6. Java设计模式学习总结(7)——结构型模式之适配器模式
  7. Java的生成器模式(又名建造者模式),你真的会了吗
  8. asp.net970-宠物医院管理系统#毕业设计
  9. selenium调用浏览器打印功能,并保存为PDF
  10. 程序化生成(PCG)算法的改进——基于以地学为主的多基础学科
  11. 数据库:mongodb安装教程、配置账号密码
  12. win7系统设置无线临时(计算机到计算机)网络 手机,Win7无线临时网络允许移动WIFI和“启用Internet连接共享”...
  13. HUE介绍及使用功能
  14. Python数据拟合幂函数y=ax^b
  15. 华为服务器gpu芯片怎么样,云服务器gpu有多大
  16. opencv3之SVD
  17. 免费获取ADS1299的AD原理图和封装!
  18. mysql my.cnf 内容_为何 my.cnf 内容是空的,数据库却可以运行
  19. android10 psp模拟器,ppsspp模拟器安卓版
  20. FT2004(D2000)开发实战之网口stmmac报错调试(Failed to reset the dma)

热门文章

  1. android自动登录不过登陆界面,【教程】Android 记住密码和自动登录界面的实现
  2. as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。
  3. 经纬度 c代码中定义_如何将TXT文本格式的批量经纬度值导入到奥维成为标签
  4. mysql直接生成excel_MYSQL 将excel里面的数据直接生成sql语句
  5. 122. 买卖股票的最佳时机 II008(贪心算法+思路)
  6. 岛屿类问题的广度优先深度优先双解法(Leetcode题解-Python语言)
  7. 《C++ Primer》7.1.4节练习
  8. matlab中图像轮廓变细,Matlab中,用bwmorph函数提取二进制图像的轮廓
  9. #4604. The kth maximum number(整体二分 + 树套树)
  10. Wannafly挑战赛24 无限手套(生成函数)