zoukankan      html  css  js  c++  java
  • HUD 2444 The Accomodation of Students (二分图染色+最大匹配)

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 2010
    using namespace std;
    int n,m,num,head[maxn],f[maxn],match[maxn],color[maxn];
    struct node
    {
        int u,v,pre;
    }e[maxn*maxn];
    void Add(int from,int to)
    {
        num++;
        e[num].u=from;
        e[num].v=to;
        e[num].pre=head[from];
        head[from]=num;
    }
    bool Color(int s)
    {
        for(int i=head[s];i;i=e[i].pre)
          if(!color[e[i].v])
            {
              color[e[i].v]=-1*color[s];
              if(!Color(e[i].v))return 0;
            }
          else if(color[e[i].v]==color[s])return 0;
        return 1;
    }
    int Dfs(int s)
    {
        for(int i=head[s];i;i=e[i].pre)
          if(f[e[i].v]==0)
            {
              f[e[i].v]=1;
              if(match[e[i].v]==0||Dfs(match[e[i].v]))//XXXXX又是这句错了 下次再写错就XXXX 
                {
                  match[e[i].v]=s;
                  return 1;
                }
            }
        return 0;
    }
    int main()
    {
        while(~scanf("%d%d",&n,&m))
          {
              num=0;
              memset(f,0,sizeof(f));
              memset(head,0,sizeof(head));
              memset(color,0,sizeof(color));
              memset(match,0,sizeof(match));
            int u,v;
            for(int i=1;i<=m;i++)
              {
                  scanf("%d%d",&u,&v);
                  Add(u,v);Add(v,u);
              }
            if(n==1)
                {
                    printf("No
    ");
                    continue;
              }
            color[1]=1;
            if(!Color(1))
              {
                  printf("No
    ");
                  continue;
              }
            int ans=0;
            for(int i=1;i<=n;i++)
              {
                  memset(f,0,sizeof(f));
                  ans+=Dfs(i);
              }
            printf("%d
    ",ans/2);
          }
        return 0;
    }
  • 相关阅读:
    环保
    A股行情记录
    航运
    黑五类
    家电
    妖股
    高校概念股
    科技园区
    壳股
    白底黑字or黑底白字,眼睛更喜欢哪一个?
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5547434.html
Copyright © 2011-2022 走看看