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

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

1004. Counting Leaves (30)

2019-11-11 04:50: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個孩子依次入隊。現在隊列的元素是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
欧美高清自拍一区| 91精品久久久久久久久久另类| 欧美亚洲另类在线| 精品动漫一区二区| 久久手机免费视频| 国产精品久久久久999| 国产欧美精品一区二区三区-老狼| 97久久久久久| 国产不卡在线观看| 日韩精品视频中文在线观看| 亚洲永久在线观看| 国内自拍欧美激情| 少妇高潮久久久久久潘金莲| 欧美成人精品在线| 日韩福利视频在线观看| 欧美日韩国产中文字幕| 国产日韩欧美另类| 国产亚洲精品成人av久久ww| 国产精品欧美一区二区三区奶水| 欧美极品xxxx| 国产一区二区三区高清在线观看| 91精品久久久久久久久| 日韩欧美在线观看视频| 亚洲变态欧美另类捆绑| 国产精品自产拍在线观看| 国产精品久久久久久久久久久久久久| 最近2019中文字幕在线高清| 久久精品亚洲精品| 久久久久久久久久久久av| 日韩免费看的电影电视剧大全| 亚洲欧美国产日韩天堂区| 国产成人精品在线观看| 国产精品一区二区三区久久久| 欧美激情在线视频二区| 91免费综合在线| 国产精品白嫩初高中害羞小美女| 国产精品扒开腿做爽爽爽视频| 97精品一区二区视频在线观看| 91精品在线影院| 欧美wwwwww| 国产视频精品va久久久久久| 久久99热精品| 国产精品99久久久久久www| 日韩国产激情在线| 亚洲成色www8888| 亚洲乱码一区av黑人高潮| 午夜精品一区二区三区在线视频| 不用播放器成人网| 久久九九国产精品怡红院| 一区三区二区视频| 久久久亚洲网站| 国产欧美一区二区三区久久人妖| 久久亚洲私人国产精品va| 在线精品高清中文字幕| 日韩av一卡二卡| 日韩精品免费一线在线观看| 日韩男女性生活视频| 久久久中精品2020中文| 国产精品久久久久久久久男| 91色在线观看| 爽爽爽爽爽爽爽成人免费观看| 日韩大陆毛片av| 久久精品亚洲热| 欧美一级大片在线观看| 91精品中国老女人| 蜜臀久久99精品久久久无需会员| 欧美专区在线视频| 国产精品99一区| 欧美美女18p| 国产精品96久久久久久又黄又硬| 欧美激情xxxxx| 日韩av123| 中文字幕亚洲欧美日韩2019| 欧美壮男野外gaytube| 国产精品观看在线亚洲人成网| 日本免费久久高清视频| 欧美激情在线观看视频| 成人av资源在线播放| 中文字幕日韩av电影| 亚洲精品一区二区三区不| 欧美成人黑人xx视频免费观看| 日韩在线www| 国产91在线播放九色快色| 午夜精品一区二区三区在线视| 精品国产欧美成人夜夜嗨| 国产亚洲免费的视频看| 久久手机精品视频| 国产精品久久综合av爱欲tv| 成人欧美一区二区三区在线| 98精品在线视频| 6080yy精品一区二区三区| 亚洲国内高清视频| 怡红院精品视频| 日韩在线免费高清视频| 欧美激情欧美激情| 26uuu国产精品视频| 欧美电影免费观看高清| 日本久久精品视频| 国产精品久久久久久久久久99| 亚洲视频视频在线| 亚洲成年网站在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲欧美日韩区| 免费91麻豆精品国产自产在线观看| 综合网日日天干夜夜久久| 九九热这里只有在线精品视| 在线观看日韩www视频免费| 成人激情视频在线播放| 亚洲欧美日韩天堂一区二区| 国产一区二区三区欧美| 欧美大片在线影院| 欧美激情高清视频| 欧美国产激情18| 91网站在线免费观看| 日韩欧美亚洲成人| 久久精品国产精品| 伊人成人开心激情综合网| 亚洲第五色综合网| 国产女同一区二区| www.亚洲免费视频| 国产在线播放91| 日韩电影免费在线观看中文字幕| 亚洲理论片在线观看| 国产精品久久久久99| 国产丝袜一区二区| 欧洲永久精品大片ww免费漫画| 欧美视频国产精品| 国产在线拍偷自揄拍精品| 国产不卡av在线免费观看| 久久亚洲一区二区三区四区五区高| 亚洲精选一区二区| 91精品美女在线| 中文字幕国产精品久久| 欧美性开放视频| 国产精品女主播视频| 久久精品99久久久香蕉| 日韩资源在线观看| 国产精品成人免费视频| 国产精品免费电影| 97涩涩爰在线观看亚洲| 久久久久久久久久亚洲| 亚洲精品一区中文| 欧美日韩在线视频一区| 久久久久久久久久婷婷| 国产精品电影在线观看| 亚洲精美色品网站| 一个人看的www欧美| 欧美精品久久久久久久久久| 欧美精品在线免费观看| 欧美精品一区二区三区国产精品| 免费97视频在线精品国自产拍| 国产精品精品一区二区三区午夜版| 亚洲人成电影在线播放| 国产精品久久视频| 日韩av网站导航| 在线激情影院一区| 亚洲丁香久久久| 26uuu另类亚洲欧美日本老年| 色av中文字幕一区| 欧美激情视频在线观看| 俺也去精品视频在线观看| 国产成人精品一区二区在线| 亚洲精品视频中文字幕| 欧美一级视频在线观看|