# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1142608 | programming23 | Combo (IOI18_combo) | C++20 | 0 ms | 0 KiB |
#include "bits/stdc++.h"
using namespace std;
int dfs(int parent,vector<vector<int>> &Tree, int count){
count++;
int ln = Tree[parent].size();
int pos = 0;
for(int i=0; i < ln; i++){
pos = max(pos, dfs(Tree[parent][i], Tree, count));
}
pos = max(count, pos);
return pos;
}
int main(){
int n;
cin >> n;
vector<vector<int>> Tree(n);
vector<int> super;
for(int i=0; i<n; i++){
int p;
cin >> p;
if (p == -1) {
super.push_back(i);
continue;
}
p--;
Tree[p].push_back(i);
}
int count = 0;
int ln = super.size();
for(int i=0; i < ln; i++){
count = max(dfs(super[i], Tree, 0), count);
}
cout << count;
return 0;
}