洛谷 P1129 BZOJ 1059 cogs 660 [ZJOI2007]矩阵游戏

简介: 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏。矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的)。每次可以对该矩阵进行两种操作: 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。

题目描述

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

行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)

列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色)

游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。

对于某些关卡,小Q百思不得其解,以致他开始怀疑这些关卡是不是根本就是无解的!!于是小Q决定写一个程序来判断这些关卡是否有解。

输入输出格式

输入格式:

 

第一行包含一个整数T,表示数据的组数。

接下来包含T组数据,每组数据第一行为一个整数N,表示方阵的大小;接下来N行为一个N*N的01矩阵(0表示白色,1表示黑色)。

 

输出格式:

 

包含T行。对于每一组数据,如果该关卡有解,输出一行Yes;否则输出一行No。

 

输入输出样例

输入样例#1:
2
2
0 0
0 1
3
0 0 1
0 1 0
1 0 0
输出样例#1:
No
Yes

说明

对于20%的数据,N ≤ 7

对于50%的数据,N ≤ 50

对于100%的数据,N ≤ 200

解题思路

  把给的矩阵当邻接矩阵跑二分图最大匹配,如果存在完美匹配(匹配数等于n),则输出Yes,否则输出No(最近状态不太好,感觉这解释好敷衍啊……过几天填坑)

源代码

#include<cstdio>
#include<cstring>
#define QL(x) memset(x,0,sizeof(x))
int map[240][240]={0};
int woman[240]={0},vis[240]={0};
int t,n;
bool dfs(int u)
{
    for(int v=1;v<=n;v++)
    {
        if(!map[u][v]) continue;
        if(vis[v]) continue;
        vis[v]=1;
        if(!woman[v]||dfs(woman[v])) {woman[v]=u;return 1;}
    }
    return 0;
}
int main()
{
    //freopen("qmatrix.in","r",stdin);
    //freopen("qmatrix.out","w",stdout);//cogs
    scanf("%d",&t);
    while(t--)
    {
        QL(woman),QL(map);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            for(int j=1,k;j<=n;j++)
            {
                scanf("%d",&map[i][j]);
            }
        }int i=1;
        for(;i<=n;i++)
        {
            QL(vis);
            if(!dfs(i)) {printf("No\n");break;}
        }
        if(i>n) printf("Yes\n");
    }
    return 0;
}

 

目录
相关文章
|
6月前
|
知识图谱
|
6月前
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
【每日一题Day312】LC2240买钢笔和铅笔的方案数 | 完全背包 数学
56 0
|
6月前
|
C++
【PTA】L1-019 谁先倒 (C++)
【PTA】L1-019 谁先倒 (C++)
78 0
【PTA】L1-019 谁先倒 (C++)
|
6月前
【每日一题Day126】LC1140石子游戏Ⅱ | 博弈dp 记忆化搜索
【每日一题Day126】LC1140石子游戏Ⅱ | 博弈dp 记忆化搜索
47 0
|
人工智能
UPC2021个人训练赛第39场 C: 粉兔找妹子(换根dp)
UPC2021个人训练赛第39场 C: 粉兔找妹子(换根dp)
94 0
UPC2021个人训练赛第39场 C: 粉兔找妹子(换根dp)
|
机器学习/深度学习 人工智能
PTA 7-3 拼题 A 是真爱 (20 分)
如果一个人在一段话里很多次提到 pintia,那对拼题 A 就是真爱啦~ 本题就请你检查一下给定的文字中出现了几次 pintia。
149 0
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
143 0
洛谷P1877-[HAOI2012]音量调节(二维01背包)
洛谷P1877-[HAOI2012]音量调节(二维01背包)
洛谷P1877-[HAOI2012]音量调节(二维01背包)
HDOJ(HDU) 2519 新生晚会(组合公式)
HDOJ(HDU) 2519 新生晚会(组合公式)
120 0