[解説] luoguのp2078の友人

互いに素セット

概要:
1. 2つの互いに素なセットを見つけるには、アレイ内のチェックのセットを使用し、FA []配列への更新することができます。

検索()を使用したとき二つの値が同一の祖先であるかどうか2.検索FA []配列が決定されないが、それが圧縮されていない値に可能な経路です。

3.A、B社は、男性または女性である可能性が高いです

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
INTのN、M、Q、P、A、B、S1、S2。
int型 FA [ 10005 ]; 

int型の検索(INT X)
{ 
    場合(FA [X] == x)をリターンX。
    戻り FAを[X] = (FA [X])を見つけます。
} 

ボイド HB(int型のx、int型のY)
{ 
    場合 FA [(y)を検索] =((X)を検索する=(y)を見つける!)(x)を見つけます。
} 

int型のmain()
{ 
    CIN >> N >> M >> P >> Q。
    以下のためのint型I = 1 ; I <= N。i)は、FA ++を[I] = I。
    int型 iは= 1 ; I <= P iは++ 
    { 
        CIN >> A >> B。
        もし(< 0)、A = -a、B = - B。
        HB(B)
    } 
    のためのint型 i = 1 ; iが<= N; iが++ 場合((I)==検索(検索1 S1 ++))を以下のためにint型 I = 1 ; I <= M; iは++)FA [I] = I。
    以下のためのint型私は=1 ; I <= Q; 私は++ 
    { 
        CIN >> A >> Bと、
        もし(< 0)、A = -a、B = - B。
        HB(B)
    } 
    のためにint型 I = 1 ; I <= M; iは++ 場合(見つける(I)==(見つける1))S2を++ 
    COUT << 分(S1、S2)。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/lovezxy520/p/11567804.html