P2024 食物链

Posted ukcxrtjr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2024 食物链相关的知识,希望对你有一定的参考价值。

题面:https://www.luogu.org/problemnew/show/P2024

本题是带权并查集模板题,要注意的是种类一共有三种,之后套公式判断是否合法,记录不合法即可。

Code:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=50005;
int f[N],p[N],n,k,ans;
int find(int x)
    if(x!=f[x])
        int fa=f[x];
        f[x]=find(f[x]);
        p[x]=(p[x]+p[fa])%3;
    
    return f[x];

bool unionn(int d,int x,int y)
    int fx=find(x),fy=find(y);
    if(fx==fy)
        if((p[y]-p[x]+3)%3!=d)
            return 1;
        
        else
            return 0;
        
    
    f[fy]=fx;
    p[fy]=(p[x]-p[y]+d+3)%3;
    return 0;

int main()
    int d,x,y;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
        f[i]=i;
        p[i]=0;
    
    for(int i=1;i<=k;i++)
        scanf("%d%d%d",&d,&x,&y);
        if(x>n||y>n||(x==y&&d==2))
            ans++;
            continue;
        
        if(unionn(d-1,x,y))
            ans++;
        
    
    printf("%d\n",ans);
    return 0;

以上是关于P2024 食物链的主要内容,如果未能解决你的问题,请参考以下文章

P2024 食物链

P2024 食物链

洛谷P2024 食物链

做题记录:P2024 食物链(洛谷)

P2024 [NOI2001] 食物链(并查集)

luogu P2024 食物链