POJ 1182(重み互いに素なセット、ベクトル?)

食物連鎖
制限時間:  1000ミリ秒   メモリの制限:  10000K
合計提出:  108628   受け入れ:  32960

説明

動物界A、B、Cの動物の3種類があり、動物の食物連鎖の3つのタイプが面白い環を構成します。食品Bは、BがCを食べ、C Aを食べます 
動物の前N、1-Nの数。各動物は親切で、B、Cであるが、我々は最終的にはそれを知らないの種類です。 
:これは、N説明から成るこの栄養動物の2つのバージョンを用いて行った 
、最初の引数が「1 X Y」であるXを表し、Yは類似しています。 
2番目の引数が「2 X Y」であり、XはYを食べる表します 
上記の二つの文を有するN個の動物のためのこの人は、文ずつの文はこの文、いくつかの真のいくつかの偽のK、Kを避けます。以下の三つの言葉の一つ、この文は嘘である場合には、真実はそうです。 
1)現在の真の場合、前の競合のいくつかは、嘘である; 
2)、次いで、現在のXまたはYがNよりも大きい場合、嘘である; 
3)Xは、現在のX、食べる表し、嘘です。 
ジョブは、N(1 <= N <=に従って与えられ 50,000) とKワード(0 <= K <= 100,000 )、 出力嘘の総数。 

入力

スペースで区切られた2つの整数N及びKの最初の行、。 
K次の3行はそれぞれ、Dは、引数の型を示す二つの数字の間のスペースで区切られた正整数D、X、Y、です。 
D = 1の場合は、XとYが類似していることを示しています。 
D = 2の場合、XはYを食べる表します

出力

唯一の嘘の数を表す1つの整数。

サンプル入力

100 7 
1 101 1 
2 1 2 
2 2 3 
2 3 3 
1 1 3 
2 3 1 
1 5

サンプル出力

3 
タイトル中国人は説明していない
私は(カードのscanf)のうちの3つまたは4つのWA、Tを作ったものの、それは、数の存在下でD []配列に注意を払うだろう紙に描く、まだ良い書き込みをこの問題を見てのように感じていますとき(dが[] + 3)%を忘れないでください 3、 私はdが唯一の3つの数字、1,2,0であることを確認したいので、
1はFAを表し、[i]は私が食べる
順番に2
民族0の2名の代表を

書式#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 FA [ 51000 ]、D [ 51000 ]。
INT CNT、N、M。
int型(検索int型x)は
{ 
    // バグを。
    もし(x == FA [X])戻りX。
    INTのルート= (FA [X])を探します。
    D [X] =(D [X] + D [FA [X] + 3)%3 戻り FA [X] = ルートと、
} 
int型メイン()
{ 

      IOS :: sync_with_stdio()。
    scanf関数(" %d個の%のD "、&​​N、&M)。
    (I、FOR 1、N)FA [I] = I。
    (I、FOR 1 、M)
    { 
        int型K、X、Y。
        scanf関数(" %D%D%D "、&​​K、およびX&Y)。
        もし(X> N || Y> N){CNT ++。引き続き;}
         場合(k個の== 2 &&のx == y)は{CNT ++。引き続き;}
         int型の FX = 検索(X)
        int型年度=(y)を見つけます。
        もし(FX == 年度)
        { 
            int型の TEMP = D [X] - D [Y]。
            もし(K == 1!&& TEMP = 0 
            { 
                CNT ++ 続け; 
            } 
            そう であれば(k個の== 2 
            { 
                もし、((D [X] -d [Y] + 3)%3 =!2)CNT ++ 
            } 

        } 
        
        { 
           場合(k個の== 1
           { 
               FA [FY] = FX。
               D [FY] =(D [X] - D [Y] + 3)%3 
           } 
           そう であれば(k個の== 2 
           { 
               FA [FY] = FX。
               D [FY] =(D [X] - D [Y] + 1 + 3)%3 
           } 
        } 
    } 
    のprintf(" %d個の\ n " 、CNT)。
}

 


おすすめ

転載: www.cnblogs.com/jrfr/p/11407408.html