PAT-A 1004 Counting Leaves
阿新 • • 發佈:2018-12-21
題目大意
題目給出了一個樹,要求由根節點往下,依次輸出每一層的葉子節點個數。
解題思路
主要使用bfs,遍歷樹的每一層的所有節點,計算所有葉子節點的數目即可。每個節點的子節點可以用一個數組來儲存。
#include <iostream> #include <vector> #include <queue> using namespace std; int main() { vector<vector<int>> v(100); int N,M; cin>>N>>M; for(int i=0;i<M;++i) { int id,K; cin>>id>>K; for(int j=0;j<K;++j) { int temp; cin>>temp; v[id].push_back(temp); } } //bfs queue<int> q; q.push(1); int size=q.size(),cnt=0; bool first=true; while(!q.empty()) { int temp=q.front(); q.pop(); if(v[temp].empty()) ++cnt; for(int i=0;i<v[temp].size();++i) q.push(v[temp][i]); if(--size==0) { if(first) { cout<<cnt; first=false; } else cout<<" "<<cnt; size=q.size(); cnt=0; } } return 0; }