zoukankan      html  css  js  c++  java
  • Codeforces 115A- Party(DFS)

    A. Party
    time limit per test
    3 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    A company has n employees numbered from 1 to n. Each employee either has no immediate manager or exactly one immediate manager, who is another employee with a different number. An employee A 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 employee B
    • Employee B has an immediate manager employee C 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 employees A and B such that A 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 or pi = -1). Every pi denotes the immediate manager for the i-th employee. If pi is -1, that means that the i-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 test(s)
    input
    5
    -1
    1
    2
    1
    -1
    
    output
    3
    题意:给一片森林,求当中的树的最大深度。

    爆搜就可以

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <cctype>
    #include <cstdlib>
    #include <set>
    #include <map>
    #include <vector>
    #include <string>
    #include <queue>
    #include <stack>
    #include <cmath>
    #define LL long long
    using namespace std;
    const int INF = 0x3f3f3f3f;
    int n,a[2010],ans,tem;
    void dfs(int u)
    {
    	tem++;
    	if(a[u]==-1)
    		return ;
    	dfs(a[u]);
    }
    void solve()
    {
    	ans=-INF;
    	for(int i=1;i<=n;i++)
    	{
    		tem=0;
    		dfs(i);
    		ans=max(ans,tem);
    	}
    	printf("%d
    ",ans);
    }
    int main()
    {
    	while(~scanf("%d",&n))
    	{
    		for(int i=1;i<=n;i++)
    			scanf("%d",a+i);
    		solve();
    	}
    	return 0;
    }
    


  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6940924.html
Copyright © 2011-2022 走看看