羅区P2071座席配置(二部グラフマッチング)

ポータル


問題解決のためのアイデア

彼の座席クラスBとして人としてクラス、次いで、2部グラフマッチング、なおから一次元に配列のすべて[] [2]、各列は、2つの座席を有するからです。

それぞれの側のために取得することができる二つに分離または分解されています。

ACコード

1の#include <iostreamの>
 2の#include <CStringの>
 3  使用して 名前空間をSTD。
4  INT N、ANS、VIS [ 2005 ] [ 2 ]、[OK] [ 2005 ] [ 2 ]。
5  int型の M [ 4005 ] [ 2 ]。
6  ブールチェック(INT U){
 7      INT iは= 0 ; I <= 1 ; I ++ ){
 8          int型 V = M [U] [I]。
9          int型 J = 0; J <= 1 ; J ++ ){
 10              であれば(VIS [V] [J])続けます11              VIS [V] [j]は= 1 12              であれば(OK [V] [J] ||!確認(OK [V] [J])){
 13                  [OK]を[V] [J] = U。
14は                 返す 15              }
 16          }
 17      }
 18      リターン 19  }
 20  int型のmain(){
 21      CIN >> N。
22      のためのint型 I =1 ; I <= 2 * N; I ++ ){
 23          CIN >> M [i]が[ 0 ] >> M [i]を[ 1 ]。
24      }
 25      のためにINT iは= 1 ; iが<= 2 * N; I ++ ){
 26          のmemsetは(VIS、0はsizeof (VIS))。
27          もし ++ ANS(チェック(I));
28      }
 29      COUT << ANS。
30      リターン 0 ;
31 }

 

おすすめ

転載: www.cnblogs.com/yinyuqin/p/12241708.html