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;
    }

  • 相关阅读:
    前端模板引擎编译
    h5与app混合开发,jsbridge
    vuex
    async await promise
    node端口被占用
    npm工作流 与webpack 分同环境配置
    GraphQL
    mybatis批量删除、插入
    Oracle数据库速查知识文档
    Oracle刷新物化视图
  • 原文地址:https://www.cnblogs.com/lijianmin6/p/10728847.html
Copyright © 2011-2022 走看看