Advertisement

CCCCC-L2-026 小字辈(25分)DFS

阅读量:

本题提供了一个规模庞大的家族族谱,要求你列出最年轻一代的成员名单。

输入格式:

第一行输入提供了一个正整数 N,表示家族中成员的总人数(N 的最大值不超过 100 000)。为便于处理,所有家族成员均被依次编号为 1 至 N。第二行则列出 N 个数字,其中第 i 个数字代表第 i 号成员的父母编号。家族中最年长的祖先其父母编号被标记为 -1。各行中的数值之间通过空格进行分隔。

输出格式:

首先输出最小的辈分等级(最初始的祖先辈分为 1,后续依次递增)。随后在第二行,按照从小到大的顺序列出辈分等级最低的成员编号,各编号之间以一个空格进行分隔,且行首与行尾不得出现多余空格。

输入样例解析

9
2 6 5 5 -1 5 6 4 7

输出样例:

4
1 9

树结构最底层节点求解方法

AC代码

复制代码
    #include<bits/stdc++.h>
    using namespace std;
    int ans,t;
    int b[100001];
    vector<int> a[100001];
    void dfs(int x,int t)	//人-代 
    {
    	b[x]=t;
    	if(t>ans)

全部评论 (0)

还没有任何评论哟~