Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F first
- #define S second
- #define PB push_back
- #define PF push_front
- #define pF pop_front
- #define pB pop_back
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef vector<int> vi;
- typedef vector<char> vc;
- typedef pair<int, int> pi;
- typedef deque<int> di;
- typedef deque<char> dc;
- typedef vector<string> vs;
- vector<bool> used(2001, false); int best = 1; int depth = 1;
- vector<vector <int> > l(2001, vector<int> (0));
- int dfs(int v){
- used[v] = true;
- for (auto u : l[v]){
- if (!used[u]){
- depth++;
- dfs(u);
- }
- }
- best = max(best, depth);
- depth--;
- }
- int n;
- int main(){
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin >> n; int x;
- for (int i = 1; i < n + 1; ++i){
- cin >> x;
- if (x != -1){
- l[x].PB(i);
- }
- }
- for (int i = 1; i < n + 1; ++i){
- dfs(i);
- for (int j = 1; j < n + 1; ++j)
- used[j] = false;
- depth = 1;
- }
- cout << best;
- }
Advertisement
Add Comment
Please, Sign In to add comment