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

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

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

输入格式
第 1 行一个整数 n,表示家族的人数;

接下来 n 行,第 i 行描述第 i 个人的孩子;

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

每个人的编号从 1 到 n。

输出格式
输出一个序列,使得每个人的孩子都比那个人后列出;

数据保证一定有解,如果有多解输出任意一解。

数据范围
1≤n≤100
输入样例:
5
0
4 5 1 0
1 0
5 3 0
3 0
输出样例:
2 4 5 3 1
思路:
拓扑排序
代码:

#include <iostream>
#include<queue>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e6+10,M=1e6+10;
int e[M],h[N],w[M],ne[M],idx;
void add(int a, int b)  // 添加一条边a->b
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
int din[N];
int main()
{memset(h, -1, sizeof h);int n;cin>>n;for(int i=1;i<=n;i++){int t;while(cin>>t){if(t==0){break;}add(i,t);din[t]++;}}queue<int>q;for(int i=1;i<=n;i++){if(!din[i]){q.push(i);}}while(!q.empty()){int t=q.front();q.pop();cout<<t<<' ';for(int i=h[t];i!=-1;i=ne[i]){int j=e[i];din[j]--;if(!din[j]){q.push(j);}}}
}

Acwing 1191. 家谱树相关推荐

  1. AcWing 1191. 家谱树 题解(拓扑排序)

    AcWing 1191. 家谱树 拓扑排序:建立一个队列,遍历所有点,将度数为1的点全部加入队列中,之后队内元素依次出队,对出队的点遍历所有临边,将这些临点的入度–,如果临点的入度为0,则加入队列中, ...

  2. Acwing 1191. 家谱树 (topsort

    添加链接描述 #include<bits/stdc++.h> using namespace std; const int N=109,M=1e4+10;; int n; int h[N] ...

  3. 【ACWing】1191. 家谱树

    题目地址: https://www.acwing.com/problem/content/1193/ 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系.给出每个人的孩子的信息.输出一个序列,使 ...

  4. 1191 家谱树(拓扑排序)

    1. 问题描述: 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系.给出每个人的孩子的信息.输出一个序列,使得每个人的孩子都比那个人后列出. 输入格式 第 1 行一个整数 n,表示家族的人数: ...

  5. php递归面包屑,php可应用于面包屑导航的递归寻找家谱树实现方法

    本文实例讲述了php可应用于面包屑导航的递归寻找家谱树实现方法.分享给大家供大家参考.具体实现方法如下:<?phpecho " ";$area = array(array(& ...

  6. Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法

    php是通过定义类来实现迭代器接口来构造迭代器,通过yield构造迭代器可以提高性能并节省系统开销,下面就跟着爱站技术频道小编的步伐来学习php可应用于面包屑导航的迭代寻找家谱树实现方法吧. 具体实现 ...

  7. java家谱树_青锋家谱系统-基于springboot+orgtree的青锋家谱树管理系统

    gen 青锋家谱系统:基于springboot架构的家谱项目系统 项目介绍 基于springboot.orgtree的家谱树管理系统,将纸质版的家谱进行电子化.信息化,建立家族的家谱血脉联系. [青锋 ...

  8. 家谱树 (并查集拓扑排序)

    目录 拓扑排序 Kahn. 最后附上Kahn的代码: 链式前向星做法: 其次是我用Kahn做的家谱树的代码(矩阵): 其次是我用Kahn做的家谱树的代码(链式前向星): [题目描述] 有个人的家族很大 ...

  9. php子孙树,递归 迭代 得到家谱树 子孙树

    $arr=array( array('id'=>'1','name'=>'吉林','parent'=>0), array('id'=>'2','name'=>'北京',' ...

最新文章

  1. PHP的抽象类、接口的区别和选择
  2. AgileEAS.NET平台开发实例-药店系统-数据库还原
  3. WF4.0入门系列1——创建一个简单的工作流
  4. html如何添加关闭按钮,大神你好,请问怎么在以下代码的div中添加一个关闭按钮?...
  5. 如何在 Spring 生态中玩转 RocketMQ?
  6. linux上的ds命令,Linux--容器命令
  7. [js高手之路]从原型链开始图解继承到组合继承的产生
  8. 开始学习VS2008+.net3.5咯 :)
  9. PHP超级配置模块--PHP4,PHP5,module,cgi任你玩转--应用于Apache
  10. SGU 160.Magic Multiplying Machine
  11. 要多大内存才满足_佛龛的尺寸要多大?
  12. 不一样的结果,不一样的人生
  13. Qt实践录:常见控件操作示例1
  14. cuda安装和卸载(ubuntu)
  15. UVA11038 How Many O's?题解
  16. 安卓开源项目周报0301
  17. 【typecho插件】typecho邮箱插件LoveXiaozhou是一款Typecho邮件通知类插件、小周
  18. 水星无线路由器设置虚拟服务器,水星无线路由器桥接设置桥接(图文详解)
  19. 我的工程师爸爸 - 音频应用DIY系列之三:汤姆猫
  20. 使用重力感应传感器和Arduino的手机控制机器人车

热门文章

  1. 考研政治——马克思三大定律之否定之否定
  2. 网页保存mhtml格式
  3. 手Q游戏中心的个性化推荐实战 | CSDN博文精选
  4. VS code 快速配置C语言编写环境
  5. 国内常用公共DNS服务器、各省运营商DNS服务器汇总
  6. web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)...
  7. 海康ISAPI透传ftp
  8. Flutter自动获取焦点
  9. xutils的bitmap的深度使用
  10. 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。