zoukankan      html  css  js  c++  java
  • 食物链

    传送门

    题目描述

    动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B

    吃 C,C 吃 A。

    现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道

    它到底是哪一种。

    有人用两种说法对这 N 个动物所构成的食物链关系进行描述:

    第一种说法是“1 X Y”,表示 X 和 Y 是同类。

    第二种说法是“2 X Y”,表示 X 吃 Y 。

    此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真

    的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。

    • 当前的话与前面的某些真的话冲突,就是假话

    • 当前的话中 X 或 Y 比 N 大,就是假话

    • 当前的话表示 X 吃 X,就是假话

    你的任务是根据给定的 N 和 K 句话,输出假话的总数。

    输入输出格式

    输入格式:

    从 eat.in 中输入数据

    第一行两个整数,N,K,表示有 N 个动物,K 句话。

    第二行开始每行一句话(按照题目要求,见样例)

    输出格式:

    输出到 eat.out 中

    一行,一个整数,表示假话的总数。

    输入输出样例

    输入样例#1:
    100 7
    1 101 1
    2 1 2
    2 2 3
    2 3 3
    1 1 3
    2 3 1
    1 5 5
    
    输出样例#1:
    3
    

    说明

    1 ≤ N ≤ 5 ∗ 10^4

    1 ≤ K ≤ 10^5

    题目大意

    并查集

    给出A吃B B吃C C吃A的关系 和几句话 求几句假话

    题解

    x表示属于A类 X+N表示X属于B类 X+2*N表示x属于C类

    代码

    #include<iostream>
    #include<cstdio>
    #define maxn 50003
    using namespace std;
    int n,k,ans,x,y,rela;
    int fa[3*maxn];
    int f(int x){return fa[x]==x?x:fa[x]=f(fa[x]);}
    int same(int x,int y){return f(x)==f(y);}
    void unite(int x,int y){
        int fx=f(x),fy=f(y);
        if(fx!=fy)fa[fx]=fy;
    }
    int main(){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=3*n;i++)fa[i]=i;
        for(int i=1;i<=k;i++){
            scanf("%d%d%d",&rela,&x,&y);
            if(x>n||y>n||(rela==2&&x==y)){
                ans++;continue;
            }
            if(rela==1){
                if(same(x,y+n)||same(x,y+2*n)){
                    ans++;continue;
                }
                unite(x,y);unite(x+n,y+n);unite(x+2*n,y+2*n);
            }
            if(rela==2){
                if(same(x,y)||same(x,y+2*n)){
                    ans++;continue;
                }
                unite(x,y+n);unite(x+n,y+2*n);unite(y,x+2*n);
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    linux 短信收发
    sama5d3 环境检测 adc测试
    【Codeforces 723C】Polycarp at the Radio 贪心
    【Codeforces 723B】Text Document Analysis 模拟
    【USACO 2.2】Preface Numbering (找规律)
    【Codeforces 722C】Destroying Array (数据结构、set)
    【USACO 2.1】Hamming Codes
    【USACO 2.1】Healthy Holsteins
    【USACO 2.1】Sorting A Three-Valued Sequence
    【USACO 2.1】Ordered Fractions
  • 原文地址:https://www.cnblogs.com/zzyh/p/7427847.html
Copyright © 2011-2022 走看看