也比较简单,但是要记一下深度
还有BFS算法,这里没写,有时间补充(没弹出一个更新一下深度,因为)
#include<bits/stdc++.h>
using namespace std;
int N,M;
vector<int> child[110];
int leaf[110]={0};
int maxLevel=-1;
void DFS(int index,int level)
{
if(child[index].size()==0)
{
if(level>maxLevel)
{
maxLevel=level;
}
leaf[level]++;
return;
}
for(int i=0;i<child[index].size();i++)
DFS(child[index][i],level+1);
}
int main()
{
scanf("%d %d",&N,&M);
int parent,K,tmp;
for(int i=1;i<=M;i++)
{
scanf("%d %d",&parent,&K);
for(int k=0;k<K;k++)
{
scanf("%d",&tmp);
child[parent].push_back(tmp);
}
}
DFS(1,1);
for(int i=1;i<=maxLevel;i++)
{
printf("%d",leaf[i]);
if(i<maxLevel)
printf(" ");
}
return 0;
}