zoukankan      html  css  js  c++  java
  • 家谱树 x

    家谱树
    【问题描述】
        有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。
        给出每个人的孩子的信息。
        输出一个序列,使得每个人的后辈都比那个人后列出。
    【输入格式】
        第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<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define Maxn 101
     6 
     7 using namespace std;
     8 
     9 struct zhan{
    10     int z[Maxn],tops;
    11     void add(int x)  //进栈操作 
    12     {
    13         z[++tops]=x;
    14     }
    15     int duitou()     //返回队头元素 
    16     {
    17         return z[tops];
    18     }
    19     void shan()      //删除队头元素 
    20     {
    21         tops--;
    22     }
    23     bool kong()      //检验栈是否为空 
    24     {
    25         return tops == 0 ? 1 : 0;
    26     }
    27     zhan ()//构造函数(与结构体同名,没有返回值,用于初始化) 
    28     {
    29         tops=0;
    30     }
    31 }q;
    32 
    33 int n,temp,qwq;
    34 int du[Maxn],chu[Maxn];
    35 int gx[Maxn][Maxn];
    36 
    37 int main()
    38 {
    39     char s;
    40     scanf("%d",&n);
    41     for(int i=1;i<=n;i++)
    42     {
    43         while(cin>>s)
    44         {
    45             if(s=='0') break;
    46             else
    47             {
    48                 chu[i]++;             //表示i有chu[i]条出度 
    49                 du[s-'0']++;          //s入度++ 
    50                 gx[i][chu[i]]=s-'0';  //说明i的第几(chu[i])条出度为s 
    51             }
    52         }
    53     }
    54     for(int i=1;i<=n;i++) 
    55     {
    56         if(!du[i]) q.add(i);   //如果入度为0,进栈 
    57     }
    58     do
    59     {
    60         temp=q.duitou();
    61         q.shan();
    62         cout<<temp<<" ";
    63         for(int j=1;j<=chu[temp];j++)
    64         {
    65             du[gx[temp][j]]--;     //与刚出栈的'temp'有边的入度-- 
    66             if(!du[gx[temp][j]]) q.add(gx[temp][j]);//如果这个元素的入度为0,进栈 
    67         }
    68     }while(!q.kong());  //终止条件 
    69     return 0;
    70 }

    如果运气好也是错,那我倒愿意错上加错!

    ❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

  • 相关阅读:
    JSON.stringify 方法模拟
    leetcode算法:1648. 销售价值减少的颜色球
    Dynamics 365 Marketing Trail
    Power Automate expression中的 string 相关公式
    Adaptive Card 和 Power Automate
    Power Automate Approval 功能初始化失败
    linux编程-csh
    王道论坛_PC端播放和下载视频
    记树莓派的一个项目_RGB1602的实际使用
    提取植物大战僵尸静态资源
  • 原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/6709541.html
Copyright © 2011-2022 走看看