拓扑排序算法(AOV)简单例题 【例4-12】、家谱树

2023-11-10 02:49

本文主要是介绍拓扑排序算法(AOV)简单例题 【例4-12】、家谱树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【例4-12】、家谱树

【问题描述】

    有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。

    给出每个人的孩子的信息。

    输出一个序列,使得每个人的后辈都比那个人后列出。

【输入格式】

    1行一个整数N1<=N<=100),表示家族的人数。

    接下来N行,第I行描述第I个人的儿子。

    每行最后是0表示描述完毕。

【输出格式】

    输出一个序列,使得每个人的后辈都比那个人后列出。

    如果有多解输出任意一解。

【输入样例】

    5

    0

    4 5 1 0

    1 0

    5 3 0

    3 0

【输出样例】

    2 4 5 3 1

 代码实现:

#include<bits/stdc++.h>
using namespace std;
#define N 105
int n;
int a[N][N],ans[N],r[N],c[N],tot,num;
int main()
{scanf("%d",&n); int j;for(int i=1;i<=n;i++){do{scanf("%d",&j);if(j!=0){c[i]++;  //出度+1a[i][c[i]]=j;r[j]++;  //入度+1}}while(j!=0);}for(int i=1;i<=n;i++)if(r[i]==0)ans[++tot]=i;//记录入度为0的点,并将所有大的入栈int num=0;do{int t=ans[tot];cout<<t<<" ";//栈顶元素出栈并输出tot--;num++;for(int i=1;i<=c[t];i++){r[a[t][i]]--;if(r[a[t][i]]==0)//入度为0,后继点入栈ans[++tot]=a[t][i];}}while(num!=n);return 0;
}

这篇关于拓扑排序算法(AOV)简单例题 【例4-12】、家谱树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379969

相关文章

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ