亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

1004. Counting Leaves (30)

2019-11-11 05:38:53
字體:
來源:轉載
供稿:網友

http://blog.csdn.net/xkzju2010/article/details/46868273

A family hierarchy is usually PResented by a pedigree tree. Your job is to count those family members who have no child.

Input

Each input file contains one test case. Each case starts with a line containing 0 < N < 100, the number of nodes in a tree, and M (< N), the number of non-leaf nodes. Then M lines follow, each in the format:

ID K ID[1] ID[2] … ID[K]

where ID is a two-digit number representing a given non-leaf node, K is the number of its children, followed by a sequence of two-digit ID’s of its children. For the sake of simplicity, let us fix the root ID to be 01.

Output

For each test case, you are supposed to count those family members who have no child for every seniority level starting from the root. The numbers must be printed in a line, separated by a space, and there must be no extra space at the end of each line.

The sample case represents a tree with only 2 nodes, where 01 is the root and 02 is its only child. Hence on the root 01 level, there is 0 leaf node; and on the next level, there is 1 leaf node. Then we should output “0 1” in a line. Sample Input

2 1 01 1 02

Sample Output

0 1 1082/5000

Sample Input 2 1 01 1 02 Sample Output 0 1

又如: 這里寫圖片描述

#include<iostream>#include<queue>using namespace std;#define MAX 101 //常量的定義/*序號,層數,孩子個數,孩子數組,其中序號可用node數組下標來表示*/struct node{ int level; int k; int child[MAX];};int main(){ node tree[MAX]; int N,M;cin>>N>>M; for(int i=1;i<=N;i++){ //下標從1開始,下標為節點序號 tree[i].level=0; tree[i].k=0; } for(i=0;i<M;i++){ int index;cin>>index;cin>>tree[index].k; for(int j=0;j<tree[index].k;j++){ cin>>tree[index].child[j]; //tree[tree[index].child[j]].level=tree[index].level+1;//不能簡單的+1,因為你不知道輸入的順序,需要重新掃描一遍。 } } for(i=1;i<=N;i++){ for(int j=0;j<tree[i].k;j++){ tree[tree[i].child[j]].level=tree[i].level+1; } } queue<int> q; q.push(1);//01插入 int lev=0,cnt=0; //lev某層,cnt某層的葉子節點數 while(!q.empty()){ //BFS廣度優先用隊列 int u=q.front();q.pop(); int curlev=tree[u].level; if(curlev!=lev){ cout<<cnt<<" "; cnt=0; lev=curlev; } if(tree[u].k==0) cnt++; for(int i=0;i<tree[u].k;i++){ q.push(tree[u].child[i]); } } cout<<cnt<<endl; return 0;}

重新遍歷計算層數解析:孩子的level一定是父親的level+1,這個是顯然的。03 1 07 02 3 04 05 06 01 2 02 03 我第一行輸入的是3號結點,第二行輸入的2號結點,第三行輸入的是根結點,根據這個輸入順序就不好判斷3到底是第幾層了。

隊列解析:剛開始,跟結點入隊,就是1入隊。然后進入while,判斷隊列是不是空,發現不是空,進入循環體,然后隊列元素出隊,返回u 這個u是樹里邊結點的編號,u現在是1,就是根結點。curlev是當前這個結點(根結點)的層號,tree[u].lev是u號節點的層號,curlev和lev都是0,然后跳過if,執行下面的東西。if(tree[u].k==0)是判斷當前這個節點的孩子數量是不是0,如果是0就當然是葉子節點了。這里因為根節點有兩個孩子2和3,所以不是葉子節點,然后底下那個for循環是依次讓當前節點的孩子入隊,就是把根結點的所有孩子依次入隊,現在隊列里是2和3。這樣第一遍循環就完了,再從頭開始?,F在隊列的元素是2和3,隊列不為空,執行下面的循環體。u=q.front()得到隊頭元素,u=2,是第02號結點。然后curlev=1,是02結點的層數,這里if判斷curlev和lev不相等,不相等了,說明遍歷到下一層了,這時候就執行if底下的代碼,輸出cnt,就是上一層的葉子結點數量,是0,然后讓cnt=0,重新統計現在這層的葉子結點,并讓lev=curlev,更新lev,代表遍歷到這層了。再下面的if是判斷u這個結點是不是葉子結點,02號有3個孩子,不是葉子結點,cnt不++。然后下面的for是把02號的3個孩子依次入隊?,F在隊列的元素是3 4 5 6。第三次進入while循環,不為空,q.front()得到隊頭,是3號結點,并出隊。判斷curlev和lev是不是相等的,此時兩個都是1,相等跳過if。判斷3是不是葉子結點,因為3有一個孩子不是葉子結點,然后把3號結點的所有孩子入隊,就是把7入隊。此時隊列元素是4 5 6 7。然后循環再開始,隊列不空,繼續得到隊頭元素是4號結點,q.pop()出隊,curlev這時候是04號結點的層數,是2,而lev是1,此時兩個不等,不相等就要打印結果了cnt=0,打印0,并把step更新,step=2了,然后判斷04號是不是葉子結點,發現04號的k是0,說明他是葉子結點,cnt++,因為k是0,所以下面的for就不執行了,現在隊列的元素是5 6 7,然后這三個元素的執行過程和4號結點是一樣的,略。最后隊列是空了,退出while循環,底下有一句打印cnt,就是把最后一層的葉子結點數量打印出來。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区国产| 亚洲第一网中文字幕| 久久精品免费电影| 日韩h在线观看| 亚洲专区中文字幕| 欧美日韩第一页| 午夜精品视频网站| 亚洲xxxxx电影| 欧美亚洲国产另类| 国产精品视频不卡| 日韩av片永久免费网站| 亚洲欧美一区二区三区在线| 欧美激情小视频| 97香蕉久久超级碰碰高清版| 国产一区二区三区在线视频| 久久久久国产一区二区三区| 国产不卡精品视男人的天堂| 亚洲新声在线观看| 亚洲欧美精品suv| 国产精品三级在线| 国产v综合ⅴ日韩v欧美大片| 亚洲色图校园春色| 亚洲最大福利网| 亚洲美女黄色片| 欧美国产日韩一区二区| 日韩高清免费观看| 欧美激情久久久久| 欧美日韩国产一区在线| 91沈先生在线观看| 日韩精品久久久久久福利| 国产视频福利一区| 久精品免费视频| 91精品视频大全| 精品国产精品三级精品av网址| 欧美综合国产精品久久丁香| 欧美成人午夜免费视在线看片| 91在线视频成人| 国产精品十八以下禁看| 国精产品一区一区三区有限在线| 青青草国产精品一区二区| 日韩av有码在线| 欧美激情视频三区| 日韩大胆人体377p| 一本久久综合亚洲鲁鲁| 久久久在线视频| 97在线看免费观看视频在线观看| 亚洲国产精品久久| 91国语精品自产拍在线观看性色| 亚洲精品电影在线| 国产欧美日韩精品丝袜高跟鞋| 欧美激情视频三区| 国产成人在线亚洲欧美| 亚洲美女在线观看| 国产精品久久久久久久久久尿| 91久久久久久久一区二区| 亚洲精品一区二区在线| 日韩精品在线观| 久久久亚洲福利精品午夜| 91影视免费在线观看| 国产精品h片在线播放| 在线播放亚洲激情| 欧美色欧美亚洲高清在线视频| 久久久久久69| 国产精品美女免费视频| 国产精品三级久久久久久电影| 亚洲无av在线中文字幕| 91精品中文在线| 日韩美女写真福利在线观看| 欧美小视频在线观看| 久久免费视频网站| 九九精品在线观看| 午夜精品蜜臀一区二区三区免费| 欧美俄罗斯乱妇| 国产精品日韩欧美大师| 国产精品美女久久久免费| 久久久精品美女| 精品调教chinesegay| 欧美综合在线第二页| 亚洲综合日韩在线| 狠狠躁夜夜躁久久躁别揉| 91精品久久久久| 国产精品黄视频| 蜜月aⅴ免费一区二区三区| 色在人av网站天堂精品| 久久久人成影片一区二区三区| 一区二区三区在线播放欧美| 亚洲jizzjizz日本少妇| 国产欧美韩国高清| 亚洲国产婷婷香蕉久久久久久| 精品在线欧美视频| 欧美一级片久久久久久久| 亚洲天堂网站在线观看视频| 亚洲性日韩精品一区二区| 国产精品一区二区性色av| 欧美电影免费播放| 国产精品99导航| 久久精品色欧美aⅴ一区二区| 欧美一区二区大胆人体摄影专业网站| 5566日本婷婷色中文字幕97| 亚洲天堂成人在线视频| 91色琪琪电影亚洲精品久久| 日韩不卡在线观看| 亚洲深夜福利视频| 国产精品视频久久久| 色悠悠国产精品| 8090成年在线看片午夜| 成人av资源在线播放| 精品视频偷偷看在线观看| 欧美电影免费观看高清| 日韩中文在线视频| 国产在线视频91| 日韩va亚洲va欧洲va国产| 精品亚洲一区二区三区| 亚洲精品99久久久久中文字幕| 欧美成人精品在线视频| 久久亚洲精品毛片| 在线亚洲男人天堂| 日韩av影院在线观看| 成人黄色网免费| 亚洲午夜国产成人av电影男同| 上原亚衣av一区二区三区| 成人写真视频福利网| 国产盗摄xxxx视频xxx69| 黑人巨大精品欧美一区二区免费| 在线视频免费一区二区| 亚洲成年人在线| 欧美激情免费视频| 992tv成人免费视频| 中文国产成人精品久久一| 日本久久中文字幕| 欧美成人在线影院| 久久精品99无色码中文字幕| 大桥未久av一区二区三区| 自拍亚洲一区欧美另类| 亚洲精品美女久久久久| 国产精品亚洲视频在线观看| 久久久久久久电影一区| 2025国产精品视频| 亚洲欧美资源在线| 亚洲欧美日韩在线一区| 欧美丰满老妇厨房牲生活| 欧美综合在线第二页| 久久久人成影片一区二区三区观看| 91高清视频免费| 夜夜嗨av色一区二区不卡| 亚洲国产精品系列| 日韩美女在线观看| 欧洲中文字幕国产精品| 亚洲欧美成人精品| 欧美另类在线观看| 久久伊人免费视频| 日韩精品在线免费播放| 国产视频久久久| 国产精品自产拍高潮在线观看| 国产美女高潮久久白浆| 麻豆成人在线看| 国产91色在线免费| 日韩精品有码在线观看| 成人亚洲激情网| 成人黄色大片在线免费观看| 欧美日韩国产成人| xxx成人少妇69| 中文字幕不卡av| 91久久国产婷婷一区二区|