zoukankan      html  css  js  c++  java
  • POJ 2289(多重匹配+二分)

    POJ 2289(多重匹配+二分)

    把n个人,分到m个组中。题目给出每一个人可以被分到的那些组。要求分配完毕后,最大的那一个组的人数最小。

    用二分查找来枚举。

    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int map[1010][510];
    int vis[1010];
    int link[1010][510];
    int num[510];
    int mid;
    int n,m;
    bool dfs(int i)
    {
        for(int j=0; j<m; j++)
        {
            if((!vis[j])&&map[i][j])
            {
                vis[j]=1;
                if(num[j]<mid)
                {
                    link[j][num[j]++]=i;
                    return 1;
                }
                for(int p=0; p<num[j]; p++)
                    if(dfs(link[j][p]))
                    {
                        link[j][p]=i;
                        return 1;
                    }
            }
        }
        return 0;
    }
    int mult()
    {
        memset(num,0,sizeof(num));
        for(int i=0; i<n; i++)
        {
            memset(vis,0,sizeof(vis));
            if(!dfs(i))
                return 0;
        }
        return 1;
    }
    int main()
    {
        char s1[20];
        while(cin>>n>>m,n&&m)
        {
            getchar();
            memset(map,0,sizeof(map));
            for(int i=0; i<n; i++)
            {
                scanf("%s",s1);
                while(1)
                {
                    int x;
                    scanf("%d",&x);
                    map[i][x] = 1;
                    char ch = getchar();
                    if(ch == '
    ')
                        break;
                }
            }
    
            int l=0,r=n-1;
            while(l<=r)
            {
                mid=(l+r)>>1;
                if(mult())
                    r=mid-1;
                else
                    l=mid+1;
            }
            cout<<r+1<<endl;
        }
        return 0;
    }
    

      




  • 相关阅读:
    打印机故障之乌龙事件
    为什么 FastAdmin 的插件不全部免费?
    PADS Logic 脚本的 Fields 一个对象记录
    时间模块和random模块

    模块的导入和使用
    递归函数与二分查找算法
    递归函数
    匿名函数
    内置函数
  • 原文地址:https://www.cnblogs.com/Przz/p/5409845.html
Copyright © 2011-2022 走看看