家谱树(信息学奥赛一本通 1351)

摘要:
[输入格式]在第一行中,使用整数N(1<=N<2#include<ans[101];6intmain()7{8cin>N;i++)10{11do12{13cin>j;//c[i]来存储点i 17a[i][c[i]=j;18r[j]++;=0);=N;i++)24if(r[i]==0)25ans[+tot]=i;

【问题描述】

有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。 给出每个人的孩子的信息。 输出一个序列,使得每个人的后辈都比那个人后列出。

【输入格式】

第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


拓扑排序算法

【stack】

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 int a[101][101],c[101],r[101],ans[101];
 5 int i,j,tot,temp,num,n,m;
 6 int main()
 7 { 
 8     cin >> n;
 9     for (i = 1; i <= n; i++)
10     {
11         do
12         {
13             cin >> j;
14             if (j !=0 )
15             {
16                 c[i]++;                //c[i]用来存点i的出度 计数
17                 a[i][c[i]] = j;
18                 r[j]++;                //r[j]用来存点j的入度。
19             }   
20         }
21         while (j != 0);
22     }
23 for (i = 1; i <= n; i++)
24         if (r[i] == 0)
25             ans[++tot] = i;          //把图中所有入度为0的点入栈,栈用一维数组ans[]表示
26     do
27     {
28         temp = ans[tot];
29         cout << temp << " ";
30         tot--; num++;                 //栈顶元素出栈并输出
31         for (i = 1; i <= c[temp]; i++)
32         {
33             r[a[temp][i]]--;
34             if (r[a[temp][i]] == 0) //如果入度减1后变成0,则将这个后继点入栈
35                 ans[++tot] = a[temp][i];
36         }     
37     }
38     while (num != n); //tot>0        //如果输出的点的数目num等于n,说明算法结束
39     return 0;
40 }

【Vector + queue】

家谱树(信息学奥赛一本通 1351)第1张

免责声明:文章转载自《家谱树(信息学奥赛一本通 1351)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇shiro启用注解方式WinForm中DefWndProc、WndProc与IMessageFilter的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java for循环 &amp;lt;数字金子塔&amp;gt;

import java.util.*;   class Demo{    public static void main(String[] arge){       //输入一个0~9的整数      Scanner sca = new Scanner(System.in);      int num = sca.nextInt();       for...

imei 算法

#!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Time : 2019-11-30 13:29 @Author : Xincheng.Zhao @Desc : @Email : zhaoboy9692@163.com @File : imei.py """ def genImeiL...

Odoo 接口

1. 很多人还是习惯使用restful格式进行接口操作,但odoo已默认jsonrpc,所以需要专门写一个装饰器 def json_response(func): """返回去除封装的JSON""" @wraps(func) def decorate(*args, **kwargs): request.__raw_j...

自己写的一个随机生成ID号的函数(C#)

public string GetRandomNum(int num_down , int num_up){ //传递随机数的上下限 用于限制其长度 注意 num_up的值上限1000000000int re=0; Random ro=new Random(unchecked((int)DateTime.Now.Ticks));re=ro.Next(num...

【转】oracle之函数与过程

  本篇主要内容如下: 6.1 引言 6.2 创建函数 6.3 存储过程 6.3.1创建过程 6.3.2调用存储过程 6.3.3 AUTHID 6.3.4 PRAGMA AUTONOMOUS_TRANSACTION 6.3.5开发存储过程步骤 6.3.6删除过程和函数 6.3.7过程与函数的比较 6.1 引言 过程与函数(另外还有包与触发器)是命名的...

Python笔记---错误笔记

Python---错误笔记 1. Python编码问题: 我们在编写 Python 脚本时,往往会写上中文凝视。可是有时候,当我们执行程序时。却发现例如以下错误:SyntaxError: Non-ASCII character 'xe5' in file /home/johnnie/Files/Workspace/python/head_first/ch...