zoukankan      html  css  js  c++  java
  • BZOJ1191:超级英雄(二分图匹配)

    [HNOI2006]超级英雄Hero

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1191

    Description:

    现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的
    多少获得不同数目的奖品或奖金。主持人问题准备了若干道题目,只有当选手正确回答一道题后,才能进入下一题
    ,否则就被淘汰。为了增加节目的趣味性并适当降低难度,主持人总提供给选手几个“锦囊妙计”,比如求助现场
    观众,或者去掉若干个错误答案(选择题)等等。这里,我们把规则稍微改变一下。假设主持人总共有m道题,选
    手有n种不同的“锦囊妙计”。主持人规定,每道题都可以从两种“锦囊妙计”中选择一种,而每种“锦囊妙计”
    只能用一次。我们又假设一道题使用了它允许的锦囊妙计后,就一定能正确回答,顺利进入下一题。现在我来到了
    节目现场,可是我实在是太笨了,以至于一道题也不会做,每道题只好借助使用“锦囊妙计”来通过。如果我事先
    就知道了每道题能够使用哪两种“锦囊妙计”,那么你能告诉我怎样选择才能通过最多的题数吗?
    Input:
    输入文件的一行是两个正整数n和m(0 < n <1001,0 < m < 1001)表示总共有n中“锦囊妙计”,编号为0~n-1,总共有m个问题。
    以下的m行,每行两个数,分别表示第m个问题可以使用的“锦囊妙计”的编号。
    注意,每种编号的“锦囊妙计”只能使用一次,同一个问题的两个“锦囊妙计”可能一样。
    Output:
    第一行为最多能通过的题数p
    Sample Input:
    5 6

    3 2
    2 0

    0 3

    0 4

    3 2

    3 2
    Sample Output:
    4
    题解:
    裸的二分图匹配,一个锦囊对应一个问题,问通过的最大问题数。
     
    代码如下:
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    const int N = 1005 ;
    int n,m,ans=0;
    int map[N][N]={0},check[N],matching[N];
    
    inline int dfs(int x){
        for(int i=0;i<n;i++){
            if(map[x][i] &&!check[i]){
                check[i]=1;
                if(matching[i]==-1 || dfs(matching[i])){
                    matching[i]=x;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int main(){
        cin>>n>>m;
        memset(matching,-1,sizeof(matching));
        for(int i=1,x,y;i<=m;i++){
            cin>>x>>y;
            map[i][x]=map[i][y]=1;
        }
        for(int i=1;i<=m;i++){
            memset(check,0,sizeof(check));
            if(dfs(i)) ans++;
            else break ;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/heyuhhh/p/9977574.html
Copyright © 2011-2022 走看看