WEEKLY TRAINING2-B Party 树+dfs
来源:互联网 发布:淘宝图片空间满了 编辑:程序博客网 时间:2024/05/17 07:52
Description
A company has n employees numbered from1 to n. Each employee either has no immediate manager or exactly one immediate manager, who is another employee with a different number. An employeeA is said to be the superior of another employee B if at least one of the following is true:
- Employee A is the immediate manager of employeeB
- Employee B has an immediate manager employeeC such that employee A is the superior of employee C.
The company will not have a managerial cycle. That is, there will not exist an employee who is the superior of his/her own immediate manager.
Today the company is going to arrange a party. This involves dividing all n employees into several groups: every employee must belong to exactly one group. Furthermore, within any single group, there must not be two employeesA and B such thatA is the superior of B.
What is the minimum number of groups that must be formed?
Input
The first line contains integer n (1 ≤ n ≤ 2000) — the number of employees.
The next n lines contain the integers pi (1 ≤ pi ≤ n orpi = -1). Everypi denotes the immediate manager for thei-th employee. If pi is -1, that means that thei-th employee does not have an immediate manager.
It is guaranteed, that no employee will be the immediate manager of him/herself (pi ≠ i). Also, there will be no managerial cycles.
Output
Print a single integer denoting the minimum number of groups that will be formed in the party.
Sample Input
5-1121-1
3
Sample Output
Hint
For the first example, three groups are sufficient, for example:
- Employee 1
- Employees 2 and 4
- Employees 3 and 5
///////////////////////////////////////////////////////// // //// Created by 吴尔立 //// Copyright (c) 2015年 吴尔立. All rights reserved. ///////////////////////////////////////////////////////////#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib> #include <algorithm>#include <cctype>#include <stack>#include <queue>#include <map>#include <string>#include <set>#include <vector>#define ll long long;#define INF 1<<31#define cir(i,a,b) for (int i=a;i<=b;i++)#define CIR(j,a,b) for (int j=a;j>=b;j--)#define CLR(x) memset(x,0,sizeof(x))using namespace std;const int maxn=2005;int n,ans=0; int pnt[maxn],pre[maxn],head[maxn],cnt=0;int f[maxn];void addedge(int u,int v){pnt[cnt]=v;pre[cnt]=head[u];head[u]=cnt++;} void dfs(int p,int step){ans=max(ans,step);for (int i=head[p];i!=-1;i=pre[i])dfs(pnt[i],step+1);}int main(){while(scanf("%d",&n)!=EOF){memset(head,-1,sizeof(head));CLR(pre);CLR(pnt);CLR(f);cir(i,1,n){int u;scanf("%d",&u);if (u==-1)f[i]=-1;else addedge(u,i);} cir (i,1,n)if (f[i]==-1)dfs(i,1);printf("%d\n",ans);}return 0;}
- WEEKLY TRAINING2-B Party 树+dfs
- B. Party
- B. Party
- Codeforces 116C Party 树+dfs
- poj1176 party lamps(dfs)
- CodeForces 23B Party
- CodeForces 23B-Party
- USACO / Party Lamps( 朴素DFS )
- codeforces 115A Party dfs
- POJ 1176 Party Lamps (DFS)
- USACO : Party Lamps dfs 深搜
- POJ 1176 Party Lamps (DFS)
- Aizu 2306 Rabbit Party DFS
- codeforces 549B B. Looksery Party(构造)
- LeetCode Weekly Contest 52 Longest Univalue Path(链表dfs)
- Codeforces Beta Round #87 (Div. 2) / 116C Party (DFS&树的最大深度)
- Codeforces 116C - Party(dfs)
- Codeforces 115A- Party(DFS)
- 21 单例模式
- 安装Oracle数据库软件
- WPF中使用WebBrowser Com组件,实现动态HTML抽取。
- poj 1719Shooting Contest
- 程序猿:喜欢与聪明的同事们在一起搞软件开发
- WEEKLY TRAINING2-B Party 树+dfs
- XML解析PULL
- 22 桥接模式
- Eloquent ORM
- 十道海量数据处理面试题与十个方法大总结
- Javac编译时报“非法的前向引用”,以及Eclipse自带的Java编译器的缺陷
- Majority Element (easy)
- ubuntu下快速使用protobuf
- 关于Intent的其它东西