zoukankan      html  css  js  c++  java
  • 舞会

    /*

    今天,在冬木市举行了一场盛大的舞会。参加舞会的有n 位男士,从 1 到 n 编号;有 m 位女士,从 1 到 m 编号。对于每一位男士,他们心中都有各自心仪的一些女士,在这次舞会中,他们希望能与每一位自己心仪的女士跳一次舞。同样的,对于每一位女士,她们心中也有各自心仪的一些男士,她们也希望能与每一位自己心仪的男士跳一次舞。在舞会中,对于每一首舞曲,你可以选择一些男士和女士出来跳舞。但是显然的,一首舞曲中一位男士只能和一位女士跳舞,一位女士也只能和一位男士跳舞。由于舞会的时间有限,现在你想知道你最少需要准备多少首舞曲,才能使所有人的心愿都得到满足?

    输入描述:

    第一行包含两个整数n,m,表示男士和女士的人数。1≤n,m≤ 1000
    接下来n行,
    第i行表示编号为i的男士有ki个心仪的女生
    然后包含ki个不同的整数分别表示他心仪的女士的编号。
    接下来m行,以相同的格式描述每一位女士心仪的男士。

    输出描述:

    一个整数,表示最少需要准备的舞曲数目。
    示例1

    输入

    复制
    2 3
    1 1
    2 2 3
    0
    0
    0

    输出

    复制
    2

    */

    #include<stdio.h>
    int main(int argc,char *argv[])
    {
        int n,m,i,j,max3;
        int max1=0,max2=0,cnt=0;
        scanf("%d %d",&n,&m);
        int man[n+1][m+1];
        int woman[m+1][n+1];
        for(i=1;i<n+1;i++)
        {
            int t;
            scanf("%d",&t);
            if(t>max1)
            {
                max1=t;
            }
            for(j=1;j<t+1;j++)
            {
                scanf("%d",&man[i][j]);
            }
        }
        for(i=1;i<m+1;i++)
        {
            int t;
            scanf("%d",&t);
            if(t>max2)
            {
                max2=t;
            }
            for(j=1;j<t+1;j++)
            {
                scanf("%d",&woman[i][j]);
                if(woman[i][j]!=0&&man[j][i]==i)
                {
                    cnt++;
                }
            }
        }

        printf("%d ",max1+max2-cnt);
        return 0;
    }

  • 相关阅读:
    向cmd中添加字体的方法
    学生成绩管理系统C++
    立即抢注我的免费1T云空间
    js原型
    step3 . day8数据结构之算法
    代码练习中的bug及修改方法
    step3 . day7数据结构之二叉顺序数的创建和二叉树的栈形式遍历
    step3 . day6数据结构之非线性表 满二叉树和不完全二叉树
    step3 . day5 数据结构之线性表 栈和队的应用-球钟问题
    step3 . day4 数据结构之线性表 栈和队
  • 原文地址:https://www.cnblogs.com/lijianmin6/p/10728847.html
Copyright © 2011-2022 走看看