PAT甲级1004 c语言(满分)
c语言没有c++的一些固有的包,所以写起来会稍稍麻烦些。想要AC的米娜桑一定要静下心来耐心码哟
#include<stdio.h>//考察点:dfs 节点的id是可以重复的 ,所以Treenode不能存储level信息
struct Treenode
{
int k;//子节点个数
int children[100];//子节点下标
};
typedef struct Treenode tree[100];
tree v;int num[100];int maxlevel=0;//num[]存放每层叶结点的个数
void dfs(int index,int level)
{
int i;
if(v[index].k==0)
{
if(level>maxlevel){maxlevel=level;}
num[level]+=1;
return;
}
for(i=0;i<v[index].k;i++)
{
dfs(v[index].children[i],level+1);
}
}
main()
{//node从下标1开始,level从0开始
int n,m,i,j,node,k,c;
scanf("%d %d",&n,&m);
for(i = 0; i < m; i++) {
scanf("%d %d",&node, &k);
v[node].k=k;
for(j=0; j<v[node].k; j++) {
scanf("%d", &v[node].children[j]);
}
}
dfs(1,0);
for(i=0;i<=maxlevel;i++)
{
if(i==0) printf("%d",num[i]);
else printf(" %d",num[i]);
}
}