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

TZOJ 7690: 家谱树 拓扑排序

时间:2023-03-15 16:33:06浏览次数:36  
标签:输出 int 入度 家谱 7690 TZOJ 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
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int vis[101][101];
 4 int r[101]; //入度 ,被指向的顶点数量 
 5 int c[101]; //出度,指向的顶点数量 
 6 stack<int>v;
 7 int main()
 8 {
 9     int n;
10     cin>>n;
11     for(int i=1;i<=n;i++)
12     {
13         int x;
14         while(cin>>x,x)
15         {
16             c[i]++; //i的出度+1
17             vis[i][c[i]] = x; //存储和i相连的结点x
18             r[x]++; //结点x的入度+1 
19         }
20     }
21     for(int i=1;i<=n;i++)
22         if(r[i]==0)
23             v.push(i); //入度为0,入栈
24     int num = 0;
25     do
26     {
27         int temp = v.top();v.pop();
28         num++;
29         cout<<temp<<" ";
30         for(int i=1;i<=c[temp];i++) //遍历和栈顶相连的点c[temp]
31         {
32             r[vis[temp][i]]--; //其他点的入度-1
33             if(r[vis[temp][i]]==0)
34                 v.push(vis[temp][i]); 
35         } 
36     }while(num!=n); 
37      return 0;
38 }

 

标签:输出,int,入度,家谱,7690,TZOJ,101
From: https://www.cnblogs.com/jyssh/p/17219031.html

相关文章

  • TZOJ 5788: 最优布线问题 最小生成树
    描述  学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接......
  • TZOJ 5784: 团伙 并查集
    描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于......
  • TZOJ 3196: 看病要排队 优先队列
    描述看病要排队这个是地球人都知道的常识。不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻......
  • TZOJ 4767: 二叉树遍历
    描述  给定一颗二叉树,要求输出对二叉树进行先序和后序遍历所得到的序列。本题假设二叉树的结点数不超过1000。  输入  输入数据分为多组,第一行是测试数......
  • TZOJ数据结构实验:树相同、左叶子和、倾斜度、直径、平衡二叉树、最小深度、层次构造二
    5429数据结构实验:树是否相同intisSameTree(structTreeNode*p,structTreeNode*q)//相同返回1,否则返回0{if(p==NULL&&q==NULL)return1;if(p==NULL||......
  • TZOJ数据结构实验:二叉树的层次构造、前中后序遍历、高度depth、叶子节点数leafs、交换
    5420数据结构实验--二叉树中序遍历(二叉链表存储)voidinorder(Bitnode*t)//中序{if(t->left)inorder(t->left);cout<<""<<t->val;if(t->right)inorde......
  • P1472 奶牛家谱 Cow Pedigrees(DP)
    题目描述农民约翰准备购买一群新奶牛。在这个新的奶牛群中,每一个母亲奶牛都生两个小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3<=N<200)......
  • C/C++家谱管理系统[2023-01-18]
    C/C++家谱管理系统[2023-01-18]1.家谱管理系统问题描述:家谱用于记录某家族历代家族成员的情况与关系。本系统要求能对家谱进行存储、更新、查询、统计等操作。【实现要......
  • TZOJ 5782: 亲戚/6310: 亲戚2 并查集/路径压缩/优化
    先来看看代码清单:(1)初始化for(inti=1;i<=n;i++)f[i]=i;//初始化每个的爹是自己因为每个元素属于单独的一个集合,所以每个元素以自己作为结点(2)寻找根结点编号并压......
  • TZOJ 7331: 旅游 广搜+深搜
    描述  给定一个n*m的地图,每个方格可以取:(1)“*”:表示一个景点;(2)“#”:表示墙壁,不可经过;(3)“.”:表示通道,可以经过;现在你从左上角(0,0)出发,需要走遍每个景点......