タイトル:入力の複数のセット、パーソナルNを入力してm個のグループを入力します。次に、第m行の各入力K、kは個人のグループを表し、kは一組の次のメンバの数を表します。
番号付き0人が病気であってもよく、人々の病気のグループはまた、多くの人は、おそらく病気であるか、病気、出力のn人かもしれあり
アイデア:互いに素セットラインと、人々のこのグループに病気の人にそこに宣告することができる場合は特に、セットを構成し、そのリーダーが、各入力の最初の人である各グループで、彼らは頭のボスになってみましょう0。
最後に、頭に0を出力しますどのように多くの人々の個人のnについて、横断(ヘッド:、(x)の検索ボス:事前に[X])
書式#include <iostreamの> の#include <cmath> の#include <cstdioを> する#include <CStringの> の#include < 文字列 > の#include <マップ> 書式#include <iomanip> 書式#include <アルゴリズム> 書式#include <キュー> の#include <スタック> #include < セット > の#include <ベクトル> // CONST int型MAXN = 1E5 + 5。 #defineは長い長いっ {(-1,11,11- b)はLLのGCDをリターン?B GCD(B、%の; B)} (-1,11,11- b)は{LLのLCM 戻り、(/ GCDを #define MAX INT_MAXの に#define(I、a、b)は(;;私は= Bの<++ I私は= INT)のためFOR の#defineバグはcout << "------------- - "<< ENDL 使用して 名前空間はstdを、 int型 STU [ 31000 ]プリ[ 31000 ]。 INTのN、M、K、一つ、二つ。 INT(検索INT X) { 場合(PRE [X] == x)をリターン Xと、 戻り検索(予備[X])。 } ボイド BESAME(int型のx、int型のY) { int型 = FXを(x)を探します。 int型 FY = (y)を見つけます。 もし [FY] =前(!のfx = fyの)FX。 } ボイドclearr() { ため(int型 i = 0 ; iがn <; ++ I) 事前[I] = I。 } int型のmain() { ながら(1 ) { CIN >> N >> M。 もし(N == 0 && m個の== 0 ) ブレーク。 clearr(); 一方、(M-- ) { CIN >> K >> 1。 以下のための(int型 I = 1 iはkは<; ++ I) { CIN >> 2。 もし(検索(2)== 0 ) { BESAME(0 、1)。 } 他BESAME(一つ、二つ)。 } } int型 ANS = 0 。 (I、FOR 0、N- 1 ) { int型 HHH = (i)を探します。 もし(HHH == 0)++ ANS ; } コスト << ANS <<endl; } }