PTA|小字辈

题目

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

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

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

输入样例:
9
2 6 5 5 -1 5 6 4 7
输出样例:
4
1 9

思路

感觉和无向图的并查集很相似都是找父母
//成员:1 2 3 4 5 6 7 8 9
//父母:2 6 5 5 -1 5 6 4 7
//第i个编号对应第i位成员的父母 == 第1个编号(即2) 对应第一位成员的父母
//第2个编号(即6)对应第二位成员的父母 == 2的父母为6
//3的父母是5,4的父母是5,5的父母为-1,6的父母是5
//最终形成图(最开始的5 的父母就是-1即祖宗,下面一次是它的儿女子孙,很像树,但不是二叉树,树的结点是父母,叶子是子女)
在这里插入图片描述

解题代码1

#include <iostream>
#define MAXN 10005 
using namespace std;
int main(){
	int N,p[MAXN],minG = maxG = 1//初始化最大最小辈分
	int g[MAXN] = {0};//记录每个成员的辈分
	int a[MAXN];
	int count=0;
	cin>>N;
	for(int i = 1 ;i<= N ;i ++){
		cin>>p[i];
		//祖宗 
		if(p[i] = -1) countinue;
		//确定父母的辈分 
		if(g[p[i]] == 0){
			g[p[i]] == maxG + 1;
			maxG++;
		}
		//更新儿女的辈分 
		g[i] = g[p[i]] + 1;
		//更新最大辈分 
		if(g[i] > maxG) maxG = g[i];
		if(g[i] < minG) minG = g[i];
	} 
	//输出辈分数目 
	cout<<minG;
	//找最小辈分存在哪些人 
	for(int i = 1; i<= N ;i ++){
		if(g[i] == minG) m[count++] = i;
	} 
	//输出最小辈分存在的人 
	for(int i = 0 ; i < count;i++){
		cout<<m[i];
		if(i < count-1) cout<<" ";
	}
	cout<<endl;
}

解题代码2

#include<iostream>
using namespace std;
int father[100000];
int beifen[100000] = {0};//所有人为0
int Find(int m){
    if(father[m] == -1) //父母是祖宗 
        beifen[m] = 1;//辈分就是 1
    else if(beifen[m] == 0)//辈分还未确定 
        beifen[m] = Find(father[m])+1; // 找父母的辈分,那自己的辈分是父母的+1 
    return beifen[m];
}
int main(){
    int n,i,j;
    int max = 0,flag = 0 , count = 0;
    cin>>n;
    for(i = 1 ; i <= n ; i++) cin>>father[i];//设置每个人是自己的父母
    for( i = 1 ; i <= n ; i++)Find(i);//找父母 
    for( i = 1 ; i <= n ; i ++)//辈分更新 
        if(beifen[i]>max)
            max = beifen[i];
    cout<<max<<endl;//输出最大辈分 
    
    for( i = 1 ; i <= n ; i++) if(beifen[i] == max) count++;//记录辈分最大的人数 
    for( i = 1 ; i <= n ; i++){
        if(beifen[i] == max){
            if(flag == count - 1) cout<<i;//flag 计数确定最大辈分人的输出格式即确保最后有无空格 
            else {
                cout<<i<<" ";
                flag += 1;
            }
        }
   }
    cout<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/599597.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式

技术栈 1. 开发语言&#xff1a;JAVA 2. 数据库&#xff1a;MySQL 3. 后端框架&#xff1a;Spring boot 4. 前端框架&#xff1a;VUE2 5. 电子班牌&#xff1a; Android 7.1 6. 小程序&#xff1a;原生开发 7. 多学校Saas 模式 电子班牌是一款智慧校园管理工具&#xf…

Java实现手机短信验证码(互亿无线)

互亿无线 互亿无线是一家提供电信类增值服务插件以及其他相关插件的公司&#xff0c;是中国移动、中国联通、中国电信三大运营商的战略合作伙伴与工信部认定的电信增值业务服务商。公司旗下运营三大业务平台&#xff1a;数字奖励营销活动平台、应用短信平台、营销短信平台。 官…

上网行为审计软件分享|三款热门上网行为监控软件推荐

“小王&#xff0c;去找一款软件给我们公司安上&#xff0c;你去搜上网行为审计软件&#xff0c;看看买哪家合适” 这是某公司老板交给助理的一项工作&#xff0c;原话是这样的。 可见其实这类软件大多是人还是比较陌生的。 上网行为审计软件顾名思义就是对上网行为也就是电…

04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)

04-22 周日 阿里云-瑶光上部署FastBuild过程 时间版本修改人描述2024年4月22日14:18:59V0.1宋全恒新建文档2024年4月23日20:41:26V1.0宋全恒完成了基本流程的添加 简介 前提 准备两台服务&#xff0c;一台部署Docker&#xff0c;一台部署FastBuild的镜像容器服务所述的Docke…

落地企业业财一体化的关键能力和路径

在财务数字化的改革过程中&#xff0c;财务部门已经通过会计电算化、ERP、财务共享&#xff0c;基本实现业务财务流程拉通和财务运营效率的提升&#xff0c;接下来面临问题是如何通过构建业财一体化体系&#xff0c;进一步挖掘数字利用价值&#xff0c;为管理决策赋能。 但在业…

LLM应用-prompt提示:让大模型总结生成Mermaid流程图;充当角色输出

1、prompt提示让大模型总结生成Mermaid流程图 生成内容、总结文章让大模型Mermaid流程图展示&#xff1a; mermaid 美人鱼, 是一个类似 markdown&#xff0c;用文本语法来描述文档图形(流程图、 时序图、甘特图)的工具&#xff0c;您可以在文档中嵌入一段 mermaid 文本来生成 …

国内如何下载TikTOK,手机刷机教程

最近很多玩家都来问怎么刷机&#xff1f;手机环境怎么搭建&#xff1f;这里给大家整理了苹果IOS刷机教程 1.iOS下载教程 &#xff1a; 步骤一&#xff1a;手机调试 苹果手机系统配置推荐&#xff1a;iPhone6S以上&#xff0c;16G。 注意&#xff1a;如果是选择购入二手手机…

Devin AI程序员是如何设计出来的

背景 Devin是一个能够执行复杂工程任务并与用户在软件开发项目上积极合作的自主人工智能软件工程师&#xff0c;它擅长planning、tool use、reflecting&#xff0c;碾压大部分初级开发。 设计思路 一、界面设计 先来看 Devin 的界面&#xff0c;左边是对话框&#xff0c;记…

C++笔记之调用PCL库显示PCD文件的点云

C++笔记之调用PCL库显示PCD文件的点云 —— 2024-05-05 杭州 code review! 文章目录 C++笔记之调用PCL库显示PCD文件的点云1.运行2.点云pcd文件github下载地址2.main.cpp3.CMakeLists.txt1.运行 2.点云pcd文件github下载地址 https://github.com/luolaihua/point-cloud-data-…

如果insightface/instantID安装失败怎么办(关于InsightFaceLoader_Zho节点的报错)

可能性有很多&#xff0c;但是今天帮朋友解决问题的时候又收集了一种新的思路。 首先&#xff0c;可以先按照这篇文章里边提到的方法去安装&#xff1a; 【全网最详细】ComfyUI下&#xff0c;Insightface安装指南-聚梦小课堂_insightface如何安装-CSDN博客 其次&#xff0c;…

牛客周赛 Round 41 C-F

C 小红的循环移位 思路&#xff1a; 一个数是不是四的倍数&#xff0c;只用看最后两位是否能够整除4即可。 #include <bits/stdc.h>using namespace std; const int N 1e6 5; typedef long long ll; typedef pair<ll, ll> pll; typedef array<ll, 3> p3;…

IP规划案例

整个OSPF环境IP基于172.16.0.0/16划分 172.16.0.0/16 先分成2个网段&#xff08;OSPF RIP&#xff09;&#xff0c;借1位172.16.0.0/17 ---OSPF 再按区域划分&#xff08;5个区域&#xff09;&#xff0c;借3位 172.16.0.0/20 ---Area 0 三个环回 MGRE 4个网…

京东工业优选商品详情API接口:解锁高效工业采购新体验

京东工业优选的商品详情API接口&#xff0c;允许开发者通过程序化的方式&#xff0c;快速获取平台上的商品详细信息。这些详细信息包括但不限于商品名称、价格、规格、库存、图片、评价等&#xff0c;为企业提供全方位的商品信息查询服务。 二、API接口的主要功能 实时查询&a…

练习项目后端代码解析注解篇(annotation)

前言 本来想从接口处入手的&#xff0c;但是一下看到接口里几十个方法&#xff0c;眼睛有点抗拒&#xff0c;想想还是先看作者写的自定义注解吧。 项目里有三个自定义注解&#xff1a; 分别是AccessLimit注解、OperationLogger注解、VisitLogger注解 AccessLimit注解 这是一…

Python爬虫教程:入门爬取网页数据

1.遵守法律法规 爬虫在获取网页数据时&#xff0c;需要遵守以下几点&#xff0c;以确保不违反法律法规&#xff1a; 不得侵犯网站的知识产权&#xff1a;爬虫不得未经授权&#xff0c;获取和复制网站的内容&#xff0c;这包括文本、图片、音频、视频等。 不得违反网站的使用条…

PXE远程部署CentOS系统

文章目录 在局域网内搭建PXE服务器PXE 启动组件PXE的优点实验一、搭建PXE服务器&#xff0c;实现远程部署CentOS系统环境准备server关闭防火墙安装组件准备 Linux 内核、初始化镜像文件及PXE引导文件配置启用TFTP 服务配置启动DHCP服务准备CentOS 7 安装源配置启动菜单文件 Cli…

【C 数据结构-动态内存管理】3. 伙伴系统管理动态内存

文章目录 【 1. 伙伴系统的结构设计 】【 2. 分配算法 】【 3. 回收算法 】 伙伴系统 本身是一种动态管理内存的方法&#xff0c;和边界标识法的区别是&#xff1a;使用伙伴系统管理的存储空间&#xff0c;无论是空闲块还是占用块&#xff0c;大小都是 2 的 n 次幂&#xff08;…

AI换脸免费软件Rope中文汉化蓝宝石版本全新UI界面,修复部分已知错误【附下载地址与详细使用教程】

rope蓝宝石版&#xff1a;点击下载 注意&#xff1a;此版本支持N卡、A卡、CPU&#xff0c;且建议使用中高端显卡&#xff0c;系统要求win10及以上。 Rope-蓝宝石 更新内容&#xff1a; 0214版更新&#xff1a; ①&#xff08;已修复&#xff09;恢复到以前的模型荷载参数。有…

GDPU 天码行空11

&#xff08;一&#xff09;实验目的 1、掌握JAVA中IO中各种类及其构造方法&#xff1b; 2、重点掌握IO中类所具有的IO操作方法&#xff1b; 3、熟悉软件中登录模块的开发方法&#xff1b; 4、掌握IO中读写常用方法。 5、进一步熟悉正则规则的使用方法。 &#xff08;二&…

初期Linux

一&#xff0c;系统分为 1.1window系统 个人 &#xff1a;win7&#xff0c;win8&#xff0c;Win10&#xff0c;Win11服务器版&#xff1a;window server 2003&#xff0c;window server 2008 1.2Linux系统 centos7redhatubantukali 1.3什么是Linux&#xff1f; Linux是基…