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

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

1004. Counting Leaves (30)

2019-11-11 04:10:26
字體:
來源:轉載
供稿:網友

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
97超级碰碰碰久久久| 2020久久国产精品| 欧美极品第一页| 国产91精品黑色丝袜高跟鞋| 久久久国产影院| 亚洲国产精品成人va在线观看| 欧美亚洲国产成人精品| 一色桃子一区二区| 日韩欧美国产视频| 国产97人人超碰caoprom| 中文字幕日韩电影| 亚洲天堂免费观看| 久久久视频免费观看| 日本欧美精品在线| 精品国产乱码久久久久久虫虫漫画| 日韩中文字幕网站| 91最新在线免费观看| 国产欧美一区二区三区在线看| 92国产精品久久久久首页| 日韩视频在线观看免费| 欧美又大又硬又粗bbbbb| 亚洲精选一区二区| 亚洲人成电影网站色| 一区二区三欧美| 亚洲精品动漫久久久久| 久久人人爽人人| 国产精品高潮呻吟久久av黑人| 91av在线看| 91久久中文字幕| 91久久精品国产91性色| 91国内揄拍国内精品对白| 欧美大片免费观看在线观看网站推荐| 中文字幕亚洲一区| 久久视频在线视频| 国产日韩欧美影视| 亚洲在线www| 姬川优奈aav一区二区| 欧美在线视频观看| 91精品中国老女人| 国产精品在线看| 清纯唯美亚洲激情| 久久视频免费在线播放| 91高清视频免费观看| 欧美日韩一二三四五区| 国产日本欧美一区二区三区在线| 亚洲va国产va天堂va久久| 亚洲白拍色综合图区| 亚洲国产精品系列| 一区二区三区回区在观看免费视频| 久久精品99久久久久久久久| 亚洲精品影视在线观看| 国产精品免费一区豆花| 久久精品国产综合| 欧美视频免费在线观看| 国产精品久久网| 精品视频在线播放| 91av免费观看91av精品在线| 高跟丝袜一区二区三区| 久久视频在线播放| 日韩在线免费视频观看| 青青青国产精品一区二区| 久久五月情影视| 欧美日韩一区二区免费视频| 国产日韩亚洲欧美| 亚洲性日韩精品一区二区| 久久精品视频亚洲| 国产精品爱久久久久久久| 欧美性猛交xxxx免费看久久久| 国产日韩在线亚洲字幕中文| 亚洲国内精品视频| 亚洲黄色免费三级| 91av在线影院| 欧美电影在线观看网站| 毛片精品免费在线观看| 色悠悠久久88| 日韩高清免费在线| 亚洲最新在线视频| 九九热在线精品视频| 亚洲欧美国产精品| 国内精品久久久久久久久| 日韩电影在线观看永久视频免费网站| 国产精品成人一区| 狠狠爱在线视频一区| 成人黄色av网| 91九色单男在线观看| 亚洲欧美日韩成人| 韩日欧美一区二区| 亚洲最新在线视频| 国产日韩中文字幕在线| 亚洲片国产一区一级在线观看| 中文字幕欧美日韩在线| 超碰精品一区二区三区乱码| 国产91在线播放精品91| 亚洲女人天堂色在线7777| 久久成人这里只有精品| 欧美美女操人视频| 欧美大成色www永久网站婷| 国产午夜精品全部视频在线播放| 国产精品高精视频免费| 国产一区二区三区在线免费观看| 欧美激情视频给我| 欧美亚洲另类激情另类| 欧美性猛交xxxx免费看漫画| 国产精品大片wwwwww| 国产精品入口夜色视频大尺度| 亚洲精品98久久久久久中文字幕| 欧美日韩国产在线看| 久久久女女女女999久久| 欧美激情精品久久久久久久变态| 色偷偷av亚洲男人的天堂| 国产一区二区三区日韩欧美| 不卡在线观看电视剧完整版| 亚洲欧美国产一本综合首页| 日韩免费av在线| 国产精品美乳一区二区免费| 国产精品久久久久久久久久ktv| 久久亚洲精品中文字幕冲田杏梨| 久久久国产精品一区| 国产亚洲xxx| 欧美黄色片在线观看| 亚洲一区中文字幕在线观看| 欧美另类在线观看| 日韩中文字幕免费看| 国产精品美女999| 欧美日韩中文字幕在线| 日韩欧美在线网址| 国产精品久久久久久av下载红粉| 成人黄色大片在线免费观看| 欧日韩在线观看| 欧美精品激情blacked18| 国产午夜精品一区二区三区| 亚洲欧美日韩高清| 欧美做受高潮1| 色播久久人人爽人人爽人人片视av| 中文字幕亚洲无线码a| 欧美丝袜美女中出在线| 国产精品美女久久久久久免费| 国产精品一区二区三区在线播放| 91视频88av| 成人免费网视频| 国产视频精品免费播放| 中文字幕精品—区二区| 亚洲精品视频免费在线观看| 日韩成人av网| 在线观看国产精品91| 精品国产福利视频| 91在线观看免费| 欧美日韩午夜视频在线观看| 国产精品免费一区豆花| 精品久久久一区| 精品国产成人av| 91天堂在线观看| 韩国三级日本三级少妇99| 久久国产精彩视频| 57pao国产精品一区| 51午夜精品视频| 亚洲精品视频在线观看视频| 成人黄色午夜影院| 欧美自拍视频在线| 国产精品美女呻吟| 色婷婷av一区二区三区久久| 国产网站欧美日韩免费精品在线观看| 91av免费观看91av精品在线| 国产亚洲一区二区在线|