zoukankan      html  css  js  c++  java
  • 过山车

    过山车

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 25095    Accepted Submission(s): 10890


    Problem Description
    RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑到经费问题,boss刘决定只让找到partner的人去坐过山车,其他的人,嘿嘿,就站在下面看着吧。聪明的Acmer,你可以帮忙算算最多有多少对组合可以坐上过山车吗?
     
    Input
    输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
    1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
     
    Output
    对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。
     
    Sample Input
    6 3 3
    1 1
    1 2
    1 3
    2 1
    2 3
    3 1
    0
     
    Sample Output
    3
    二分图,匈牙利算法模板。
     1 #include <iostream>
     2 #include <cstring>
     3 #include <vector>
     4 #define N 1010
     5 using namespace std;
     6 vector<int> v[N];
     7 int used[N];
     8 bool vis[N];
     9 int k,m,n,cnt=0;
    10 bool find(int x){
    11     for(int i=0;i<v[x].size();i++){
    12         int xx=v[x][i];
    13         if(!vis[xx]){
    14             vis[xx]=true;
    15             if(!used[xx]||find(used[xx])){
    16                 used[xx]=x;
    17                 return true;
    18             }
    19         }
    20     }
    21     return false;
    22 }
    23 
    24 void match(){
    25     for(int i=1;i<=m;i++){
    26         memset(vis,0,sizeof(vis));
    27         if(find(i))
    28             cnt++;
    29     }
    30 }
    31 int main(){
    32     while(cin>>k&&k){
    33         cin>>m>>n;
    34         memset(used,0,sizeof(used));
    35         while(k--){
    36             int x,y;
    37             cin>>x>>y;
    38             v[x].push_back(y+501);
    39         }
    40         match();
    41         cout<<cnt<<endl;
    42         for(int i=1;i<=m;i++)
    43             v[i].clear();
    44         cnt=0;
    45     }
    46 
    47     return 0;
    48 }
     
  • 相关阅读:
    如何快速转载CSDN及博客园中的博客
    Ubuntu18.04连不网 报"有线连接未托管"
    Ubuntu18.04的网络配置
    vim基本操作
    Git更新远程仓库代码到本地(转)
    POJ 3253 Fence Repair
    POJ 2503 Babelfish
    POJ 2002 Squares
    POJ 1840 Eqs
    POJ 3274 Gold Balanced Lineup
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/8007044.html
Copyright © 2011-2022 走看看