zoukankan      html  css  js  c++  java
  • [bzoj1059]矩阵游戏

    对于同一行或同一列的点,不论如何交换都在同一行或同一列,而最终这n个点行和列各不相同,因此即要找到n个点,使得行和列不同
    然后对于每一个1,将所在行和所在列连边,二分图能完全匹配那么就说明存在这种方案

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct ji{
     4     int nex,to;
     5 }edge[40005];
     6 int E,t,n,x,ans,mat[405],vis[405],head[405];
     7 void add(int x,int y){
     8     edge[E].nex=head[x];
     9     edge[E].to=y;
    10     head[x]=E++;
    11 }
    12 bool dfs(int k){
    13     if (vis[k])return 0;
    14     vis[k]=1;
    15     for(int i=head[k];i!=-1;i=edge[i].nex){
    16         int v=edge[i].to;
    17         if ((!mat[v])||(dfs(mat[v]))){
    18             mat[v]=k;
    19             return 1;
    20         }
    21     }
    22     return 0;
    23 }
    24 int main(){
    25     scanf("%d",&t);
    26     while (t--){
    27         scanf("%d",&n);
    28         E=ans=0;
    29         memset(mat,0,sizeof(mat));
    30         memset(head,-1,sizeof(head));
    31         for(int i=1;i<=n;i++)
    32             for(int j=1;j<=n;j++){
    33                 scanf("%d",&x);
    34                 if (x)add(i,n+j);
    35             }
    36         for(int i=1;i<=n;i++){
    37             memset(vis,0,sizeof(vis));
    38             ans+=dfs(i);
    39         }
    40         if (ans==n)printf("Yes
    ");
    41         else printf("No
    ");
    42     }
    43 }
    View Code
  • 相关阅读:
    RecyclerView的万能适配器+定义可以到底部自动刷新的RecyclerView
    Material Design 摘要
    模版方法模式
    工厂方法模式
    单例模式
    Android中使用Intent和IntentFilter进行通信
    Json/XML/HTML数据解析
    Java中集合总结
    重构笔记
    Android中ActionBar的使用
  • 原文地址:https://www.cnblogs.com/PYWBKTDA/p/11777929.html
Copyright © 2011-2022 走看看