[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]矩阵游戏的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1059: [ZJOI2007]矩阵游戏

BZOJ 1059 ZJOI2007 矩阵游戏

bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配

[ZJOI2007]矩阵游戏

P1129 [ZJOI2007]矩阵游戏

洛谷P1129 [ZJOI2007]矩阵游戏