マルチンとトレーニングキャンプ

https://codeforces.com/contest/1230/problem/D

アイデアは:そう、すべての関係が含まれている必要があり、状況を満たすために、確かになります同じの2下さい。X場合| Y = xの場合、xがyのが含まれています。

#include <CStringの> 
する#include <アルゴリズム> 
の#include <ベクトル> 
の#include <地図> 
の#include <キュー> 
の#include <cstdioを> 
する#include <スタック> 
の#include <cmath> 
の#include <iostreamの> 
する#include < 設定 >
 #defineは長い長いっ
 の#define - (X)lowbit(x)は、x&
 使用して 名前空間、STD
構造体の
{ 
    LLのX。
    LLのY。
} [ 10000 ]。
マップ <LL、int型 > 融点;
メイン()
{ 
    int型のn; 
    scanf関数(" %のD "、&N)
    以下のためにint型 i = 1 ; iが<= N; iが++ 
    { 
        scanf関数(" %のLLDを"[I] .X)。
        MP [[i]は.X] ++ ; 
    } 
    のためのint型 i = 1 ; iが<= N iが++ 
    のscanf(" %のLLD "、および[I] .Y)。
    LL ANS = 0 セット < 整数 > SS。
    以下のために(地図<LL、整数 > ::イテレータT = mp.begin();!T = mp.end(); T ++ 
    { 
        場合(T->第> = 2 
        { 
            ためint型 I = 1 ; I <= N; iは++ 
            { 
                もし、((T->第一| [I] .X)== T-> 最初)
                ss.insert(I)。
            } 
        } 
    } 
    セット < 整数 > ::イテレータトン= ss.begin();!T = ss.end(); T ++ 
    { 
        // のprintf( "%d個の\ n"は、*トン)。
        INT O =(* T)。
        ANS + =[O] .Y。
    } 
    のprintf(" %LLDする\ n " 、ANS)。
}

 

おすすめ

転載: www.cnblogs.com/2462478392Lee/p/11580927.html