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

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

1004. Counting Leaves (30)

2019-11-11 04:09:25
字體:
來源:轉載
供稿:網友

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個孩子依次入隊。現在隊列的元素是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
久久精品国产2020观看福利| 日韩在线中文视频| 亚洲性日韩精品一区二区| 日韩欧美中文在线| 欧美精品国产精品日韩精品| 亚洲自拍偷拍在线| 欧美一级淫片播放口| 69久久夜色精品国产7777| 91大神在线播放精品| 欧美日韩亚洲视频| 日韩欧美精品中文字幕| 国产精品稀缺呦系列在线| 91成人国产在线观看| 在线免费观看羞羞视频一区二区| 久久久免费精品视频| 久久久成人的性感天堂| 国产激情视频一区| 亚洲午夜久久久影院| 国产精品h片在线播放| 日韩69视频在线观看| 亚洲国产日韩一区| 亚洲欧美日韩视频一区| 欧美性videos高清精品| 91九色综合久久| 不卡av日日日| 欧美大片在线看免费观看| 久久精品在线播放| 日韩精品一区二区三区第95| 成人国产精品久久久| 亚洲精品日产aⅴ| 国内偷自视频区视频综合| 911国产网站尤物在线观看| 日韩欧美国产骚| 亚洲激情 国产| 国产精品综合网站| 欧美精品一区三区| 精品久久久久人成| 精品少妇一区二区30p| 自拍亚洲一区欧美另类| 日韩免费在线电影| 欧美性视频在线| 国产精品日韩久久久久| 欧美成人黑人xx视频免费观看| 热99在线视频| 欧美精品中文字幕一区| 久久久久中文字幕2018| 国产69精品久久久久99| 日韩精品中文字幕视频在线| 欧美另类在线播放| www.久久撸.com| 国产精品你懂得| 欧美日韩成人免费| 这里只有精品丝袜| 国产欧美在线看| 日韩av一区二区在线| 91久久国产婷婷一区二区| 欧美第一黄网免费网站| 亚洲风情亚aⅴ在线发布| 欧美激情三级免费| 青青久久av北条麻妃海外网| 亚洲欧美精品在线| 在线播放日韩av| 日韩精品中文字幕在线观看| 亚洲女人被黑人巨大进入| 精品爽片免费看久久| 日韩中文字幕免费视频| 日韩毛片在线观看| 精品亚洲夜色av98在线观看| 国产日韩在线观看av| 国产精品免费一区二区三区都可以| 亚洲欧美另类中文字幕| 97超级碰碰人国产在线观看| 国色天香2019中文字幕在线观看| 尤物精品国产第一福利三区| 日韩在线视频线视频免费网站| 久久久久久久电影一区| 欧美日韩亚洲精品内裤| 久久久久免费视频| 亚洲日本成人网| 日av在线播放中文不卡| 538国产精品一区二区在线| 久久久久久久久久久av| 欧美成人精品h版在线观看| 国产视频久久久久| 国产香蕉97碰碰久久人人| 国产精品成av人在线视午夜片| 成人妇女免费播放久久久| 深夜福利一区二区| 久久精品99无色码中文字幕| 亚洲欧美国产一区二区三区| 久久久久久久久电影| 午夜精品一区二区三区在线视频| 欧美久久精品一级黑人c片| 国产999精品| 91在线网站视频| 热久久免费国产视频| 亚洲国产福利在线| 啊v视频在线一区二区三区| 欧美成人精品激情在线观看| **欧美日韩vr在线| 中文字幕久久亚洲| 川上优av一区二区线观看| 91久久精品视频| 国产91色在线|| 日韩va亚洲va欧洲va国产| 国产欧美日韩精品在线观看| 欧美综合第一页| 国产成人免费91av在线| 欧美裸体xxxx| 一区二区三区四区精品| 精品久久久久久久久久久久| 亚洲性夜色噜噜噜7777| 欧美猛男性生活免费| 久久久国产精品免费| 国产视频精品免费播放| 色综合久综合久久综合久鬼88| 91嫩草在线视频| 色综合色综合网色综合| 国产精品欧美日韩| 精品国产一区二区在线| 亚洲欧美中文日韩在线v日本| 久久久国产一区二区三区| 亚洲精品欧美日韩专区| 在线观看日韩视频| 中文字幕国内精品| 日韩视频免费大全中文字幕| 国产色视频一区| 欧美福利视频网站| 国产91ⅴ在线精品免费观看| 国产精品美女免费看| 日韩精品视频免费| 国产一区二区三区久久精品| 成人免费观看网址| 国产91av在线| 亚洲网站在线看| 亚洲四色影视在线观看| 国产综合香蕉五月婷在线| 中文字幕亚洲自拍| 亚洲永久在线观看| 亚洲tv在线观看| 在线日韩日本国产亚洲| 法国裸体一区二区| 日产精品99久久久久久| 亚洲国产精彩中文乱码av在线播放| 日韩av在线免费观看| 国产精品欧美亚洲777777| 亚洲全黄一级网站| 欧美激情2020午夜免费观看| 国产精品久久久久久久美男| 91精品国产91久久久久福利| 高清一区二区三区日本久| 国产精品自拍网| 久久精品中文字幕免费mv| 成人97在线观看视频| 国产欧美精品一区二区三区介绍| 亚洲精品视频二区| 亚洲精品中文字幕女同| 亚洲国产成人久久| 国内精品中文字幕| 国产精品极品美女在线观看免费| 伊人激情综合网| 国产精品久久久久aaaa九色| 韩剧1988在线观看免费完整版| 亚洲理论在线a中文字幕|