天梯小字辈

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了天梯小字辈相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
输入:

9
2 6 5 5 -1 5 6 4 7

输出:

4
1 9

DFS。
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
vector<int>father[N];
int level[N],ans=0;//某个序号的层数 

void DFS(int x,int deep)
{
	ans=max(ans,deep);//记录最大层数
	for(int i=0;i<father[x].size();i++)
	{
		level[father[x][i]]=deep+1;//这里的孩子在当前层数的第二层
		DFS(father[x][i],deep+1);//试着往下搜 
	 } 
	 return;
}

int main()
{
	//1号位数字为2,则2是1的爹 
	int n,t,root;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>t;
		if(t==-1) 
		{
			root=i;
			level[i]=1;//这是祖宗,是第一层
			continue; 
		}
		father[t].push_back(i);//放进去的是儿子的序号 
	}
	DFS(root,1);//从 祖宗开始搜 
	
	cout<<ans<<endl;//最大层
	
	int flag=0;//注意格式 
	for(int i=1;i<=n;i++)
	{
		if(level[i]==ans)//是最小辈的
		{
			if(!flag)//第一个
			{
				flag++;
				cout<<i;
			 } 
			 else//不是第一个
			 {
			 	cout<<" "<<i;
			  } 
		 } 
	 } 
	return 0;
}

以上是关于天梯小字辈的主要内容,如果未能解决你的问题,请参考以下文章

2018天梯赛L2-026. 小字辈

2020 10 17 天梯赛

L2-2 小字辈

小字辈 (bfs好题)

小字辈

音乐理论音与音高 ( 音区 | 小字一组 | 小字组 | 大字组 )