zoukankan      html  css  js  c++  java
  • 2930 填报志愿

    2930 填报志愿

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 钻石 Diamond
     
     
    题目描述 Description

        高考已经结束,而志愿填报正在进行中~

        吴校长的学校里有n位同学,每位同学有ki个愿意去的大学。而在吴老师的省份中,有m所大学有招生名额。根据往年的经验,对于每所大学(编号为ci),学校中最多只会有一人考上。因此为了避免志愿冲突,每年吴校长都要安排老师对同学们的志愿进行调整。

        今年吴校长找到了你来帮忙,请你编程计算,在不冲突的情况下,最多能有多少同学顺利填报志愿,填报志愿的方案又是怎样的。

    输入描述 Input Description

        第一行,一个数n。

        接下来的n行,每行的第一个数为ki,接下来有ki个数,表示第i个同学愿意去的大学的编号。

        下一行,一个数m。 

        下一行,m个数,为m个大学的编号。保证大学编号递增。

    输出描述 Output Description

        第一行,一个数,为在不冲突的情况下,最多能有多少同学顺利填报志愿。

        接下来的若干行,输出填报志愿的方案。每行两个数,第一个数为学生编号,第二个数为大学编号,以空格隔开。若有多种可行方案,输出字典序最小的一种。

    样例输入 Sample Input

    3

    2 1 2

    3 2 4 5

    2 2 3

    5

    1 3 4 5 6

    样例输出 Sample Output

    3

    1 1

    2 4

    3 3

    数据范围及提示 Data Size & Hint

    0<n<=1000,0<ki<=20,0<m<=2000,学生的编号为1~n,大学的编号为1~5000。同学愿意去的大学不一定招生。

    分类标签 Tags 点此展开 

     
    本题没有任何注释,因为我看了看网上都说这是典型的二分图最大匹配匈牙利算法
     
    本题只需要输出方案数即可 与题目描述不同
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    #define N 1001
    int e[N][5*N],o[5*N],vis[N],match[N];
    int n,m,k,t,ans;
    int dfs(int u){
        for(int i=1;i<=n;i++){
            if(e[i][u]&&!vis[i]){
                vis[i]=1;
                if(!match[i]||dfs(match[i])){
                    match[i]=u;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&k);
            for(int j=1;j<=k;j++)
                e[i][scanf("%d",&t),t]=1;    
        }
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
            o[scanf("%d",&t),t]=1;
        for(int i=1;i<=5000;i++){
            if(!o[i]) continue;
            memset(vis,0,sizeof vis);
            if(dfs(i)) ans++;
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/shenben/p/5573755.html
Copyright © 2011-2022 走看看