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

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

1004. Counting Leaves (30)

2019-11-11 03:38:57
字體:
來源:轉載
供稿:網友

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,就是把最后一層的葉子結點數量打印出來。


上一篇:kruskal算法

下一篇:元數據和事務

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青在线视频一区二区三区| 国产精品久久久一区| 日韩亚洲欧美中文高清在线| 亚洲第一中文字幕在线观看| 国产成人免费91av在线| 亚洲另类激情图| 91精品视频一区| 精品露脸国产偷人在视频| 中文字幕日韩欧美在线视频| 国产aⅴ夜夜欢一区二区三区| 国内免费久久久久久久久久久| 日韩精品视频在线观看网址| 日韩少妇与小伙激情| 色多多国产成人永久免费网站| 精品久久香蕉国产线看观看亚洲| 91精品一区二区| 欧美日韩加勒比精品一区| 福利一区福利二区微拍刺激| 91精品免费视频| 欧美做爰性生交视频| 91精品国产乱码久久久久久久久| 夜夜嗨av色综合久久久综合网| 欧美激情一区二区三区在线视频观看| 欧美成人精品在线视频| 国产精品久久久久久久久影视| 国产精品视频自在线| 国产精品久久视频| 精品久久久久久久久久久| 久久久精品影院| 国产成人精品亚洲精品| 国产日本欧美在线观看| 亚洲字幕在线观看| 日韩在线观看电影| 在线成人激情视频| 91在线观看免费高清完整版在线观看| 欧洲日韩成人av| 伊是香蕉大人久久| 日本成人在线视频网址| 国产成人拍精品视频午夜网站| 成人网在线免费看| 日韩欧美国产中文字幕| 久久在线视频在线| 国产精品久久久久久久久久尿| 国产精品专区h在线观看| 国产91色在线播放| 欧美老肥婆性猛交视频| 成人福利在线视频| 欧美日韩成人免费| 91精品在线国产| 97视频在线观看播放| 日韩av高清不卡| 欧美日韩免费观看中文| 日本成人在线视频网址| 69av在线视频| 欧美男插女视频| 欧美巨大黑人极品精男| 7777精品久久久久久| 91精品国产91久久久久久最新| 日韩欧美大尺度| 久久久久国产精品www| 精品国产乱码久久久久酒店| 亚洲精品国产拍免费91在线| 久久影院中文字幕| 夜夜嗨av一区二区三区免费区| 一区二区三区国产在线观看| 欧洲美女7788成人免费视频| 欧美洲成人男女午夜视频| 国产精品网站入口| 久久国产精彩视频| 中文字幕在线观看日韩| 亚洲伦理中文字幕| 高清日韩电视剧大全免费播放在线观看| 亚洲人精选亚洲人成在线| 成人av在线亚洲| 亚洲一区二区三区sesese| 色悠久久久久综合先锋影音下载| 日韩视频在线一区| 国产精品极品在线| 精品国产福利视频| 少妇久久久久久| 日韩视频在线一区| 亚洲最新av在线网站| 久久亚洲综合国产精品99麻豆精品福利| 菠萝蜜影院一区二区免费| 最近2019年中文视频免费在线观看| 欧美电影在线观看| 不卡av电影院| 美女国内精品自产拍在线播放| 日韩欧美亚洲范冰冰与中字| 一区二区三区回区在观看免费视频| 久久久久久久久久久久av| 欧美亚洲另类激情另类| 中文字幕在线观看亚洲| 国产综合色香蕉精品| 国产午夜精品久久久| 亚洲在线观看视频| 国产女同一区二区| 亚洲一区二区三区四区在线播放| 疯狂做受xxxx欧美肥白少妇| 国产精品免费网站| 国产精品欧美一区二区三区奶水| 91精品视频播放| 亚洲一区二区三区毛片| 亚洲国产黄色片| 亚洲国产91精品在线观看| 国产精品扒开腿做爽爽爽的视频| 欧美丝袜美女中出在线| 91在线视频一区| 2020久久国产精品| 最近2019中文字幕一页二页| 亚洲丝袜在线视频| 久久免费观看视频| 日韩av电影手机在线观看| 日韩高清欧美高清| 91高清视频免费| 欧美一区二区色| 国产999在线| 久久影视三级福利片| 性色av一区二区三区红粉影视| 亚洲国产私拍精品国模在线观看| 欧美激情xxxx| 欧美激情亚洲国产| 国产一区私人高清影院| 亚洲成人久久久| 91免费的视频在线播放| 久久久久久久色| 欧美三级欧美成人高清www| 国外成人性视频| 亚洲丁香久久久| 欧美性xxxx18| 成人亲热视频网站| 日韩在线视频线视频免费网站| 国产欧美精品xxxx另类| 亚洲欧美中文日韩在线| 国产色婷婷国产综合在线理论片a| 日本道色综合久久影院| 国产91精品久久久久久| 欧美极度另类性三渗透| 日韩激情片免费| 久久久久久久色| 亚洲欧美制服第一页| 日韩少妇与小伙激情| 亚洲九九九在线观看| 欧美区在线播放| 97成人精品视频在线观看| 欧美大尺度激情区在线播放| 欧美激情网友自拍| 日韩黄在线观看| 亚洲精品美女在线观看| 欧美午夜视频在线观看| 国产亚洲欧美日韩一区二区| 亚洲国产精品人久久电影| 国产日韩欧美中文在线播放| 日本欧美一二三区| 亚洲最大的成人网| 高清欧美性猛交xxxx黑人猛交| 亚洲精品自拍视频| 色妞久久福利网| 欧美电影《睫毛膏》| 国产suv精品一区二区三区88区| 欧美猛交ⅹxxx乱大交视频| 色与欲影视天天看综合网| 午夜伦理精品一区| 久久久精品在线|