浙大PAT (Advanced Level) Practise 1004. Counting Leaves (30)
2014-11-06 21:06
246 查看
#include <iostream> #include <cstdio> #include <map> #include <vector> using namespace std; /*采用深度搜索方法,获取每一层的叶子节点, 用map存储数据,省去了建立树的麻烦,此方法更为简便*/ void dfs(map<int, vector<int> > &tree, map<int,int> &res, int id, int level) { if(tree.count(id) == 0){//如果没有子节点,相应的叶子节点+1 ++res[level]; return; } for(int i = 0; i < tree[id].size(); ++i){//循环访问每一个子树 dfs(tree, res, tree[id][i], level+1); } } int main() { int n,m; map<int, vector<int> > tree;//用map按照结点与其子节点存取树 map<int, int> res; scanf("%d %d",&n,&m); for(int i = 0; i < m; ++i){//读取数据 int id, k; scanf("%d %d", &id, &k); while(k-- > 0){ int tmp; scanf("%d",&tmp); tree[id].push_back(tmp); } } dfs(tree, res, 1, 1);//深度搜索获得结果 map<int,int>::iterator it = --res.end(); int maxLevel = (--res.end())->first;//获取最大层数 for(int i = 1; i <= maxLevel; ++i){//输出结果 if(i == 1){ cout<<res[i]; } else{ cout<<" "<<res[i]; } } return 0; }
相关文章推荐
- 浙大PAT (Advanced Level) Practise 1004. Counting Leaves (30)
- PAT (Advanced Level) Practise 1022 Digital Library (30)
- PAT (Advanced Level) Practise 1030 Travel Plan (30)
- 浙大PAT (Advanced Level) Practise 1003. Emergency (25)
- 1018. Public Bike Management (30) @ PAT (Advanced Level) Practise
- 1045. Favorite Color Stripe (30)——PAT (Advanced Level) Practise
- 1068. Find More Coins (30)【背包】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1034 Head of a Gang (30)
- 1099. Build A Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1068 Find More Coins (30)
- PAT (Advanced Level) Practise 1018. Public Bike Management (30)
- PAT (Advanced Level) Practise 1022. Digital Library (30)
- 1076. Forwards on Weibo (30)【树+搜索】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1076 Forwards on Weibo (30)
- PAT (Advanced Level) Practise 1107. Social Clusters (30) 并查集
- PAT (Advanced Level) Practise 1111 Online Map (30)
- PAT (Advanced Level) Practise 1091 Acute Stroke (30)
- PAT (Advanced Level) Practise 1049 Counting Ones (30)
- PAT (Advanced Level) Practise 1076 Forwards on Weibo (30)
- PAT (Advanced Level) Practise 1072 Gas Station (30)