zoukankan      html  css  js  c++  java
  • hoj 2472 IRLab

    /*

    题目:

           值班问题,给出所有人的空余时间,问能不能够在每一个时间里安排一个人值班

    分析:

           二分匹配问题,按人与他的空余时间连线构图,然后就是hungry算法了,简单

    */

    #include <iostream>

    #include <cstring>

    #include <cstdio>

    using namespace std;

    #define X 22

    bool g[X][X],use[X];

    int xm[X],ym[X],k,p;

    bool dfs(int u)

    {

           for(int v=0;v<k;v++)

                  if(g[u][v]&&!use[v])

                  {

                         use[v] = true;

                         if(ym[v]==-1||dfs(ym[v]))

                         {

                                xm[u] = v;

                                ym[v] = u;

                                return true;

                         }

                  }

                  return false;

    }

    int hungry()

    {

           int ret = 0;

           memset(xm,-1,sizeof(xm));

           memset(ym,-1,sizeof(ym));

           for(int u=0;u<p;u++)

                  if(xm[u]==-1)

                  {

                         memset(use,false,sizeof(use));

                         if(dfs(u))

                                ret++;

                  }

                  return ret;

    }

    int main()

    {

           freopen("sum.in","r",stdin);

           freopen("sum.out","w",stdout);

           while(cin>>k>>p,k||p)

           {

                  int t,x;

                  memset(g,false,sizeof(g));

                  for(int i=0;i<p;i++)

                  {

                         scanf("%d",&t);

                         while(t--)

                         {

                                scanf("%d",&x);

                                g[i][x] = true;//该人与他的空余时间连通

                         }

                  }

                  if(hungry()==k)                 //如果能够安排好的话

                         printf("yes\n");

                  else

                         printf("no\n");

                  //printf("%d\n",hungry());

           }

           return 0;

    }

  • 相关阅读:
    哈夫曼编码拓展题
    TrieTree
    并查集
    hash一致性
    布隆过滤器
    如何计算完全二叉树的结点数?
    如何翻转单链表和双向链表
    如何判断是搜索二叉树与完全二叉树
    文本分类之特征描述vsm和bow
    文本分类概述
  • 原文地址:https://www.cnblogs.com/yejinru/p/2436081.html
Copyright © 2011-2022 走看看