L2-026 小字辈(dfs深搜)「建议收藏」

L2-026 小字辈(dfs深搜)「建议收藏」原题链接本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。

输入格式:
输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。

输出格式:
首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

输入样例:

9
2 6 5 5 -1 5 6 4 7

输出样例:

4
1 9

题解
开个数组模拟树,每个节点记录子节点就行

#include<bits/stdc++.h>
#define x first
#define y second
#define send string::nops
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
const int M = 3 * N;
const int INF = 0x3f3f3f3f;
typedef pair<int,int> PII;
typedef struct Node * pnode;
vector<int>v[N];
int depth[N],dmax;
void dfs(int u,int d){ 
   
    depth[u] = d;
    dmax = max(d,dmax);
    for(auto &vv : v[u]){ 
   
        dfs(vv, d + 1);
    }
}
int main(){ 
   
    int x,n,tou;
    cin>>n;
    for(int i = 1;i <= n;i ++){ 
   
        cin>>x;
        if(x == -1)tou = i;
        v[x].push_back(i);
    }

    dfs(tou,1);

    vector<int>res;
    for(int i = 1;i <= n;i ++)
        if(depth[i] == dmax)
            res.push_back(i);

    cout<<dmax<<endl;
    cout<<res[0];
    for(int i = 1;i < res.size();i ++)cout<<" "<<res[i];

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168917.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 下午9:00
下一篇 2022年8月8日 下午9:16


相关推荐

  • declare-styleable:自定义控件的属性[通俗易懂]

    declare-styleable:自定义控件的属性[通俗易懂]做Android布局是件很享受的事,这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢?现在我们就来讨论一下他的用法。一、在res/values文件下定义一个attrs.xml文件,代码如下:

    2022年7月13日
    20
  • GIS地理空间数据免费获取

    GIS地理空间数据免费获取GIS 地理空间数据免费获取国内 一 测绘地理信息局会提供权威的数据 需要进入全国地理信息资源目录服务系统网站 http www webmap cn main do method index 该网站提供 30 米全球地表覆盖数据 GlobeLand30 能够提供包括 地理位置 分布范围和景观格局等直观的陆表地表覆盖的空间分布和信息 1 100 万全国基础地理数据库全国 1 100 万基础地理数

    2026年3月18日
    2
  • 微信小程序页面跳转 回退页面api

    微信小程序页面跳转 回退页面api小程序如果 跳转url后 需要直接返回首页或者回退之前好几个页面,跳转url时用 wx.redirectTo设置好回退的参数即可。如果返回上一页时 跳转url时用 wx.navigateTo

    2022年8月19日
    7
  • 讯飞星火融合ChatGPT打造知识图谱攻略

    讯飞星火融合ChatGPT打造知识图谱攻略

    2026年3月14日
    3
  • 文件、目录_文件目录表

    文件、目录_文件目录表4.1文件4.1.1文件命名文件是一种抽象机制,它提供了一种方式用来存储信息以及在后面进行读取。可能任何一种机制最重要的特性就是管理对象的命名方式。对用户来说,文件的时间必须隐藏信息的保存方

    2022年8月5日
    9
  • Open3D 计算点云凸包

    Open3D 计算点云凸包open3d 计算点云的凸包 并获取凸包顶点

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号