P1129-[ZJOI2007]矩阵游戏【最大匹配】
正题
题目链接: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]矩阵游戏【最大匹配】相关推荐
- 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...
- 洛谷P1129 [ZJOI2007] 矩阵游戏 题解
洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...
- 洛谷:P1129 [ZJOI2007] 矩阵游戏
题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...
- 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)
https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...
- 洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)
洛谷:矩阵游戏 洛谷题解就挺好 目的是使得最终(1,1)(2,2)-(n,n)都有一个点 可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配 建图方式:对于 i 行 j 列的1点,建一条 i ...
- P1129 [ZJOI2007]矩阵游戏 (匈牙利算法)
传送门 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个n×n \timesn×n黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次 ...
- 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 ...
- bzoj1059: [ZJOI2007]矩阵游戏
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4748 Solved: 2264 [Submit][St ...
- bzoj 1059: [ZJOI2007]矩阵游戏(二分匹配)
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4762 Solved: 2269 [Submit][St ...
- 1059: [ZJOI2007]矩阵游戏 (匈牙利)
Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...
最新文章
- 计算某个时间距离现在_计算成像amp;深度学习(1)
- Js获取下拉框选定项的值和文本
- TCP/IP详解笔记----第一章:概述
- Java工作笔记-Java函数参传值传引用问题
- Python学习笔记之类(一)
- Java设计模式学习总结(7)——结构型模式之适配器模式
- Java的生成器模式(又名建造者模式),你真的会了吗
- asp.net970-宠物医院管理系统#毕业设计
- selenium调用浏览器打印功能,并保存为PDF
- 程序化生成(PCG)算法的改进——基于以地学为主的多基础学科
- 数据库:mongodb安装教程、配置账号密码
- win7系统设置无线临时(计算机到计算机)网络 手机,Win7无线临时网络允许移动WIFI和“启用Internet连接共享”...
- HUE介绍及使用功能
- Python数据拟合幂函数y=ax^b
- 华为服务器gpu芯片怎么样,云服务器gpu有多大
- opencv3之SVD
- 免费获取ADS1299的AD原理图和封装!
- mysql my.cnf 内容_为何 my.cnf 内容是空的,数据库却可以运行
- android10 psp模拟器,ppsspp模拟器安卓版
- FT2004(D2000)开发实战之网口stmmac报错调试(Failed to reset the dma)
热门文章
- android自动登录不过登陆界面,【教程】Android 记住密码和自动登录界面的实现
- as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。
- 经纬度 c代码中定义_如何将TXT文本格式的批量经纬度值导入到奥维成为标签
- mysql直接生成excel_MYSQL 将excel里面的数据直接生成sql语句
- 122. 买卖股票的最佳时机 II008(贪心算法+思路)
- 岛屿类问题的广度优先深度优先双解法(Leetcode题解-Python语言)
- 《C++ Primer》7.1.4节练习
- matlab中图像轮廓变细,Matlab中,用bwmorph函数提取二进制图像的轮廓
- #4604. The kth maximum number(整体二分 + 树套树)
- Wannafly挑战赛24 无限手套(生成函数)