zoukankan      html  css  js  c++  java
  • 洛谷 2055 [ZJOI2009]假期的宿舍——二分图匹配

    题目:https://www.luogu.org/problemnew/show/P2055

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=55;
    int T,n,hd[N],xnt,to[N*N],nxt[N*N],pre[N];
    bool vis[N],hj[N],flag;
    int rdn()
    {
        int ret=0;char ch=getchar();
        while(ch>'9'||ch<'0')ch=getchar();
        while(ch>='0'&&ch<='9')(ret*=10)+=ch-'0',ch=getchar();
        return ret;
    }
    void add(int x,int y)
    {
        to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
    }
    bool dfs(int cr)
    {
        for(int i=hd[cr],v;i;i=nxt[i])
            if(!vis[v=to[i]])
            {
                vis[v]=1;
                if(!pre[v]||dfs(pre[v]))
                    {pre[v]=cr;return true;}
            }
        return false;
    }
    int main()
    {
        T=rdn();
        while(T--)
        {
            memset(hd,0,sizeof hd);xnt=0;
            memset(pre,0,sizeof pre);flag=0;
            n=rdn();bool x;
            for(int i=1;i<=n;i++)
            {
                x=rdn();if(x)vis[i]=1;else vis[i]=0;
            }
            for(int i=1;i<=n;i++)
            {
                x=rdn();if(!vis[i]){hj[i]=0;continue;}
                if(x)hj[i]=1;
                else hj[i]=0,add(i,i);
            }
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                {
                    x=rdn();if(x&&!hj[i]&&vis[j])add(i,j);
                }
            for(int i=1;i<=n;i++) if(!hj[i])
            {
                memset(vis,0,sizeof vis);
                if(!dfs(i)){flag=1;break;}
            }
            if(flag)printf("%c%c%c
    ",84,95,84);else printf("%c%c%c
    ",94,95,94);
        }
        return 0;
    }
  • 相关阅读:
    Java 注解
    java多线程
    webstorm配置Monokai-Sublime.jar主题
    express
    npm与package.json
    Node require方法加载规则
    js伪数组转数组
    node中的Console
    Node.js核心模块-url
    服务端渲染SSR和客户端渲染CSR
  • 原文地址:https://www.cnblogs.com/Narh/p/9419431.html
Copyright © 2011-2022 走看看