2.数据结构:5.食物链

cpp 复制代码
#include<algorithm>
#include<iostream>
#include<cstring> 

using namespace std;

const int N=50010;

int n,m;
int p[N],d[N];

int find(int x){
    if(x!=p[x]){
        int t=find(p[x]);
        d[x]+=d[p[x]];
        p[x]=t;
    }
    
    return p[x];
}

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        p[i]=i;
    }
    
    int ans=0;
    while(m--){
        int t,x,y;
        cin>>t>>x>>y;
        
        if(x>n||y>n){
            ans++;
        }else{
            int px=find(x),py=find(y);
            if(t==1){
                if(px==py&&(d[x]-d[y])%3){
                    ans++;
                }else if(px!=py){
                    p[px]=py;
                    d[px]=d[y]-d[x];
                }
            }else{
                if(px==py&&(d[x]-d[y]-1)%3){
                    ans++;
                }else if(px!=py){
                    p[px]=py;
                    d[px]=d[y]-d[x]+1;
                }
            }
        }
    }
    
    printf("%d\n",ans);
    
    return 0;
}

总共三种动物,维护和根节点之间的距离。对三取模之后把同一个集合里面的动物分为了三类。

相关推荐
荒诞硬汉几秒前
对象数组.
java·数据结构
洛生&8 分钟前
Elevator Rides
算法
2501_9335130417 分钟前
关于一种计数的讨论、ARC212C Solution
算法
Wu_Dylan18 分钟前
智能体系列(二):规划(Planning):从 CoT、ToT 到动态采样与搜索
人工智能·算法
散峰而望24 分钟前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
知乎的哥廷根数学学派25 分钟前
基于多尺度注意力机制融合连续小波变换与原型网络的滚动轴承小样本故障诊断方法(Pytorch)
网络·人工智能·pytorch·python·深度学习·算法·机器学习
蚊子码农30 分钟前
算法题解记录-208实现Trie前缀树
运维·服务器·算法
2301_8002561131 分钟前
【人工智能引论期末复习】第3章 搜索求解2 - 对抗搜索
人工智能·算法·深度优先
程序猿阿伟39 分钟前
《量子算法开发实战手册:Python全栈能力的落地指南》
python·算法·量子计算
wen__xvn42 分钟前
代码随想录算法训练营DAY13第六章 二叉树part01
数据结构