首页 > 其他分享 > 7690: 家谱树 拓扑排序

7690: 家谱树 拓扑排序

时间:2023-04-28 16:55:18浏览次数:40  
标签:输出 vis int 拓扑 入度 家谱 7690 101

描述

 

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

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

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

 

输入

 

第1行一个整数N(1≤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;
int vis[101][101];
int r[101]; //入度 ,被指向的顶点数量 
int c[101]; //出度,指向的顶点数量 
stack<int>v;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        while(cin>>x,x)
        {
            c[i]++; //i的出度+1
            vis[i][c[i]] = x; //存储和i相连的结点x
            r[x]++; //结点x的入度+1 
        }
    }
    for(int i=1;i<=n;i++)
        if(r[i]==0)
            v.push(i); //入度为0,入栈
    int num = 0;
    do
    {
        int temp = v.top();v.pop();
        num++;
        cout<<temp<<" ";
        for(int i=1;i<=c[temp];i++) //遍历和栈顶相连的点c[temp]
        {
            r[vis[temp][i]]--; //其他点的入度-1
            if(r[vis[temp][i]]==0)
                v.push(vis[temp][i]); 
        } 
    }while(num!=n); 
     return 0;
}

 

标签:输出,vis,int,拓扑,入度,家谱,7690,101
From: https://www.cnblogs.com/jyssh/p/17362627.html

相关文章

  • C++的拓扑排序实现
    template<typenameT=CString,typename_Data=CString> structUnion_node//!<节点 { Union_node():nColor(0){} std::vector<Union_node*>vecNodeSon; Tkey;//!<关键数据 _Datadata;//!<卫星数据 mutableintnColor;//0:白色节点(未发现),1:灰色节点(发现),......
  • 有向图的拓扑序列
    #include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=1e5+10;intn,m;inth[N],e[N],ne[N],idx;intd[N];//入线intq[N];voidadd(inta,intb){e[idx]=b;ne[idx]=h[a];h[a]=idx++;}boolto......
  • P2661 [NOIP2015 提高组] 信息传递-拓扑排序+DFS深度优先遍历
    题目描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信......
  • 讲课:拓扑排序、最短路算法
    什么是图?把图在计算机中表示(储存)拓扑排序度与一个顶点v关联的边的条数称作该顶点的度(degree)在有向图G=(V,E)中,以一个顶点v为起点的边的条数称为该顶点的出度(out-degree),以一个顶点v为终点的边的条数称为该节点的入度(in-degree)思路首先记录各......
  • POJ 1094Sorting It All Out(拓扑排序)
    题目地址:http://poj.org/problem?id=1094这个题改了一下午。。代码越改越挫。。凑活着看吧。。#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<ctype.h>#include<queue>#include<map>......
  • 【图论之拓扑排序】剑指 Offer II 114. 外星文字典
    剑指OfferII114.外星文字典讲解传送门constintN=26,M=N*N;classSolution{public:inth[N],e[M],ne[M],idx=0;boolst[N];intin[N],cnt=0;//上面三行要写在classSolution内部,不然每次调用不会清空voidadd(inta,intb){......
  • DDR4 拓扑 DDR 学习时间 (Part B - 3):Write Leveling
        https://zhuanlan.zhihu.com/p/348360737https://blog.csdn.net/jsf120/article/details/113986468    ......
  • 高速电路中菊花链、fly-by与T点拓扑
       开局一张图,内容……  在高速电路中往往涉及到多个高速存储设备,因此合理的拓扑结构对布局走线非常重要。主流的拓扑模式有菊花链、fly-by与T点。  菊花链是相对最为常见的一种拓扑方式。菊花链拓扑的原理可以解释为:将所有的总线视作拓扑的干路,从处理器引出之后,每个存......
  • 堪比Topogun的神级拓扑插件RetopoFlow
    推荐:将 NSDT场景编辑器 加入你的3D开发工具链以往我们需要拓扑时一般都是借助到Topogun这个软件,今天来介绍下Blender中一个神级拓扑插件RetopoFlow,如果使用Blender工作流的小伙伴可以尝试使用下,至少不用导来导去那么麻烦了~1、使用教程Blender的插件安装基本都一样,这里就不多......
  • 拓扑排序
    拓扑排序前言拓扑排序是一种图论算法,拓扑图被简称为\(\text{DAG}\)(有向无环图)。下面来说说拓扑序的定义吧:对于一个有向图\(G\),拓扑序是关于这个图的一个线性序列,这个序列满足当\(<u,v>\inG\)且\(u\tov\)时,\(u\)在\(v\)的前面。这里解释的可能比较浅显,详情请查阅百......