[ZJOI2007]矩阵游戏
Posted wlzs1432
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ZJOI2007]矩阵游戏相关的知识,希望对你有一定的参考价值。
[ZJOI2007]矩阵游戏
题面
题解
把行和列看成二分图的两个点集
目标是要让每行每列都匹配
显然更改行和列不会影响匹配的结果
即行和列最大匹配为N时一定满足
#include<bits/stdc++.h> using namespace std; const int MAXN = 500 + 10; inline int read() int f=1,x=0; char ch; do ch=getchar(); if(ch==‘-‘) f=-1; while(ch<‘0‘||ch>‘9‘); do x=(x<<3)+(x<<1)+ch-‘0‘; ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘); return f*x; int t; int n; int g[MAXN][MAXN]; int vis[MAXN]; int li[MAXN]; inline bool dfs(int x) if(x==0) return 1; for(int i=1;i<=n;i++) if(g[x][i]&&!vis[i]) vis[i]=1; if(dfs(li[i])) li[i]=x; return 1; return 0; int main() t=read(); while(t--) n=read(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=read(); int ans=0; for(int i=1;i<=n;i++) memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; memset(li,0,sizeof(li)); if(ans==n) printf("Yes\n"); else printf("No\n");
以上是关于[ZJOI2007]矩阵游戏的主要内容,如果未能解决你的问题,请参考以下文章