码迷,mamicode.com
首页 > 其他好文 > 详细

PAT:1004. Counting Leaves (30) AC

时间:2015-03-10 16:49:01      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<vector>
const int MAX=510;
using namespace std;

int n,m,le=0;          //节点数,非叶子节点数,最深层叶层数
vector<int> child[MAX];    //存储孩子情况
int number[MAX];      //每一层叶子数

void DFS(int s,int l)
{
  if(child[s].size()==0)
  {
    ++number[l];
    if(le<l)
      le=l;
    return;
  }
  for(int i=0 ; i<child[s].size() ; ++i)
  {
    DFS(child[s][i],l+1);
  }
}

int main()
{
  scanf("%d%d",&n,&m);
  for(int i=0 ; i<m ; ++i)
  {
    int node,k,c;
    scanf("%d%d",&node,&k);
    for(int j=0 ; j<k ; ++j)
    {
      scanf("%d",&c);
      child[node].push_back(c);
    }
  }

  DFS(1,1);      //从节点1开始,1是第一层

  for(int i=1; i<=le ; ++i)    //输出每层叶子数
  {
    printf("%d",number[i]);
    if(i!=le)
      printf(" ");
  }

  return 0;
}

PAT:1004. Counting Leaves (30) AC

标签:

原文地址:http://www.cnblogs.com/Evence/p/4326340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!