60pts求助
查看原帖
60pts求助
452531
cygnus_beta楼主2021/7/6 20:04

代码如下:

#include<iostream>
using namespace std;

struct node{
    int ls,rs;
    explicit node(int _ls=-1,int _rs=-1):ls(_ls),rs(_rs){}
};

class tree{
private:
    int now_size,max_rank=-1;
    node* nodes;
public:
    explicit tree(const size_t& size):now_size(0),nodes(new node[size]){}

    ~tree(){delete[] nodes;}

    void insert(node in){
        if(not in.ls)in.ls=in.rs=-1;
        else in.ls--,in.rs--;
        nodes[now_size++]=in;
    }

    void dfs(const int& index,int rank){
        if(index==-1)return;
        max_rank=max(max_rank,rank);
        dfs(nodes[index].ls,rank+1);
        dfs(nodes[index].rs,rank+1);
    }

    int get_ans()const{return max_rank;}
};

int n;
node Node;

int main(){
    cin>>n;
    tree Tree(n);
    for(int i=0;i<n;i++)cin>>Node.ls>>Node.rs,Tree.insert(Node);
    Tree.dfs(0,1);
    cout<<Tree.get_ans();

    return 0;
}
2021/7/6 20:04
加载中...