您的位置:首页 > 其它

pat1004 Counting Leaves

2015-02-22 22:58 399 查看
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
vector<int>tr[105];
int ans[105];
int mx;
void dfs(int u,int fa,int dep)
{
  if(tr[u].size() == 0)ans[dep]++;
  mx = max(mx,dep);
  for(int i = 0;i<tr[u].size();i++)
  {
    dfs(tr[u][i],u,dep+1);
  }
}
int main()
{
  int n,m,i,j,a,k,b;
  while(scanf("%d%d",&n,&m)!=EOF)
  {
    mx = -1;
    for(i = 0;i<m;i++)
    {
      scanf("%d %d",&a,&k);
      for(j = 0;j<k;j++)
      {
        scanf("%d",&b);
        tr[a].push_back(b);
      }
    }
    memset(ans,0,sizeof(ans));
    dfs(1,-1,1);
    for(i = 1;i<=mx;i++)
    {
      printf("%d",ans[i]);
      if(i!=mx)printf(" ");
      else printf("\n");
    }
  }
  return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: