パイロットと

トピックリンク:https://loj.ac/problem/6000

質問の意味:各航空機はパイロットと第二のパイロット正を持っていますが、いくつかのパイロットが同じ航空機にすることはできません、最も多くの航空機が離陸する方法を尋ねました。

アイデア:パイロットの二部グラフが一致することができるようになります

書式#include <stdio.hに> 
する#include <iostreamの> 
書式#include < 文字列の.h> 
の#include <math.h>の
書式#include < 文字列 > 
の#include <アルゴリズム> 
書式#include <キュー> 
の#include <マップ> 
typedefの長い 長いLL ;
使用して 名前空間はstdを、
整数N、M。
int型 [ 105 ] [ 105 ]、B [ 105 ]。
BOOL VIS [ 105 ]。
のinit()
{
    int型私は、jは、
    scanf関数(" %D%D "、&​​N、&M)。
    int型U、Vを、
    memset(0はsizeof ())。
    しばらく(〜のscanf(" %D%D "、&​​U&V))
        [U] [V] [V] [U] = = 1 
    memset(B、 - 1はsizeof (b)参照)。
}
あなたが一致して(あなたと)
{
    int型私は、jは、
    (i = M + 1 ; <I = N; I ++ 
    {
        もし([U] [i]は&&!VIS [I])
        {
            VIS [i]は = ;
            もし(B [I] == - 1個の || 一致(B [I]))
            {
                B [i]は = U。
                リターン 1 ;
            }
        }
    }
    リターン 0 ;
}
int型のmain()
{
    初期化();
    int型 ANS = 0 ;
    以下のためにINT iが= 1 ; I <= M; I ++ 
    {
        memsetの(VIS、はsizeof (VIS));
        ANS + = マッチ(I)。
    }
    printf(" %dの" 、ANS)。
    リターン 0 ;
}

 

おすすめ

転載: www.cnblogs.com/zcb123456789/p/12264512.html