zoukankan      html  css  js  c++  java
  • COGS 886. [USACO 4.2] 完美的牛栏

    ★★☆   输入文件:stall4.in   输出文件:stall4.out   简单对比
    时间限制:1 s   内存限制:128 MB

    USACO/stall4(译by Felicia Crazy)

    描述

    农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶。上个星期,农夫约翰刚刚收集到了奶牛们的爱好的信息(每头奶牛喜欢在哪些牛栏产奶)。一个牛栏只能容纳一头奶牛,当然,一头奶牛只能在一个牛栏中产奶。

    给出奶牛们的爱好的信息,计算最大分配方案。

    格式

    PROGRAM NAME: stall4

    INPUT FORMAT:

    (file stall4.in)

    第一行 两个整数,N (0 <= N <= 200)和M (0 <= M <= 200)。N是农夫约翰的奶牛数量,M是新牛棚的牛栏数量。
    第二行到第N+1行

    一共N行,每行对应一只奶牛。第一个数字(Si)是这头奶牛愿意在其中产奶的牛栏的数目(0 <= Si<= M)。后面的Si个数表示这些牛栏的编号。牛栏的编号限定在区间(1..M)中,在同一行,一个牛栏不会被列出两次。

    OUTPUT FORMAT:

    (file stall4.out)

     只有一行。输出一个整数,表示最多能分配到的牛栏的数量。

    SAMPLE INPUT (file stall4.in)

    5 5

    2 2 5

    3 2 3 4

    2 1 5

    3 1 2 5

    1 2

    SAMPLE OUTPUT (file stall4.out)

    4

     二分图匹配

    匈牙利算法 

    屠龙宝刀点击就送

    #include <cstring>
    #include <cstdio>
    
    bool used[301];
    
    int Cow_L[301],Answer,Graph[301][301],n,m;
    bool dfs(int x)
    {
        for(int i=1;i<=m;i++)
        {
            if(Graph[x][i]==1&&!used[i])
            {
                used[i]=1;
                if(Cow_L[i]==0||dfs(Cow_L[i]))
                {
                    Cow_L[i]=x;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main()
    {
        freopen("stall4.in","r",stdin);
        freopen("stall4.out","w",stdout);
        scanf("%d%d",&n,&m);
        for(int x,y,i=1;i<=n;i++)
        {
            scanf("%d",&x);
            while(x--)
            {
                scanf("%d",&y);
                Graph[i][y]=1;
            }
        }
        for(int i=1;i<=n;i++)
        {
            memset(used,0,sizeof(used));
            if(dfs(i))
            Answer++;
        }
        printf("%d",Answer);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    JavaScript操作符instanceof揭秘
    Linux打开txt文件乱码的解决方法
    Working copy locked run svn cleanup not work
    poj 2299 UltraQuickSort 归并排序求解逆序对
    poj 2312 Battle City 优先队列+bfs 或 记忆化广搜
    poj2352 stars 树状数组
    poj 2286 The Rotation Game 迭代加深
    hdu 1800 Flying to the Mars
    poj 3038 Children of the Candy Corn bfs dfs
    hdu 1983 Kaitou Kid The Phantom Thief (2) DFS + BFS
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6735854.html
Copyright © 2011-2022 走看看