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

    题目链接

    矩阵快速幂+二分图匹配,

    对于对角线上的每个点看看能不能换到就行,

    但是一开始$dicnic$写挂了

    只好写的匈牙利

    /**************************************************************
        Problem: 1059
        User: zhangheran
        Language: C++
        Result: Accepted
        Time:388 ms
        Memory:1464 kb
    ****************************************************************/
     
    // luogu-judger-enable-o2
    /*
        by Qingnian Su
        2018.7.26
        9:28
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int t;
    int n;
    int map[210][210];
    int dfn[210];
    int alist[210];
    bool ins[210];bool opt;
    bool dfs(int x)
    {
    //  printf("%d
    ",x);
        for(int i=1;i<=alist[x];i++)
          if(!ins[map[x][i]]){
    //      printf("%d %d %d
    ",x,i,map[x][i]);
            ins[map[x][i]]=true;
    //      printf("%d %d
    ",dfn[ins[map[x][i]]],dfs(dfn[map[x][i]]));
            if(!dfn[map[x][i]]||dfs(dfn[map[x][i]])){
              dfn[map[x][i]]=x;return true;}
          }
    //    printf("qwq %d
    ",x);
        return false;
    }
    void clear()
    {
        memset(map,0,sizeof(map));
        memset(dfn,0,sizeof(dfn));
        memset(alist,0,sizeof(alist));
    //  memset(ins,0,sizeof(ins));
        return ;
    }
    int main()
    {
    //  freopen("1.in","r",stdin);
    //  freopen("1.out","w",stdout);
        scanf("%d",&t);
        while(t--){
            clear();
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
              for(int j=1;j<=n;j++)
                scanf("%d",&opt),
                opt=opt==1?map[i][++alist[i]]=j:false;
            for(int i=1;i<=n;i++){
                memset(ins,0,sizeof(ins));
                if(!dfs(i)){puts("No");goto rp;}
            }
            puts("Yes");rp:;
        }
    }
    /*
    1
    2
    1 1 
    1 1 
    */
  • 相关阅读:
    安装python官方的mysql库“mysql-connector-python”
    ubuntu(Mint-17)修改dns
    Updating Protobuf and GRPC in Golang
    git切换到远程分支
    ubuntu下取代ping的好工具tcpping
    为什么利率上升,债券价格下降?
    关于债券之我的疑惑
    GitHub超详细图文攻略
    git——从远程库克隆
    git——添加远程库
  • 原文地址:https://www.cnblogs.com/arcturus/p/9374899.html
Copyright © 2011-2022 走看看