bzoj1059: [ZJOI2007]矩阵游戏

来源:互联网 发布:登录前映射网络驱动器 编辑:程序博客网 时间:2024/04/30 01:54

传送门
同行的点经过变换之后仍然同行
同列的点经过变换之后仍然同列(以上结论自己yy)
于是问题转化为求不同行且不同列的n个点。
用二分图匹配水过。

#include<cstring>  #include<cmath>   #include<cstdio>  #include<iostream>  #include<cstdlib>   #include<algorithm>using namespace std;int a[205][205],b[205],v[205],t,n,fl; int dfs(int x){    for (int i=1;i<=n;i++)        if (!v[i]&&a[x][i]){            v[i]=1;            if (!b[i]||dfs(b[i])){                b[i]=x;                return 1;            }        }    return 0;}int main(){    scanf("%d",&t);    while (t--){        fl=1;        scanf("%d",&n);        memset(b,0,sizeof(b));        for (int i=1;i<=n;i++)            for (int j=1;j<=n;j++) scanf("%d",&a[i][j]);        for (int i=1;i<=n;i++){            memset(v,0,sizeof(v));            fl&=dfs(i);        }        if (fl) printf("Yes\n"); else printf("No\n");    }    return 0;}
0 0
原创粉丝点击