程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 家譜樹,家族樹

家譜樹,家族樹

編輯:C++入門知識

家譜樹,家族樹


【問題描述】     有個人的家族很大,輩分關系很混亂,請你幫整理一下這種關系。     給出每個人的孩子的信息。     輸出一個序列,使得每個人的後輩都比那個人後列出。 【輸入格式】     第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<stack>
 5 using namespace std;
 6 int map[101][101];
 7 stack<int>s;
 8 int rudu[101];
 9 int main()
10 {
11     int n;
12     scanf("%d",&n);
13     for(int i=1;i<=n;i++)
14     {
15         int a;
16         while(scanf("%d",&a))
17         {
18             if(a==0)break;
19             map[i][a]=1;
20             rudu[a]++;
21         }
22     }
23     for(int i=1;i<=n;i++)
24     {
25         if(rudu[i]==0)
26         {
27             s.push(i);
28         }
29     }
30     while(s.size()!=0)
31     {
32         int p=s.top();
33         s.pop();
34         printf("%d ",p);
35         for(int i=1;i<=n;i++)
36         {
37             if(map[p][i]==1)
38             {
39                 rudu[i]--;
40                 if(rudu[i]==0)s.push(i);
41             }
42         }
43     }
44     return 0;
45 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved