代码如下:
#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;
}