PTA PAT甲级 1004 Counting Leaves
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e3;
int s[N];
int n,m;
int maxf;
struct Node
{
//该节点的所有子节点的idx编号存入vecotr
vector<int>son;
}nodes[N];
void dfs(int floor,int id)
{
if(!nodes[id].son.size())
{
s[floor]++;
maxf=max(maxf,floor);
return;
}
//搜索它的每一个子节点
for(auto it:nodes[id].son)dfs(floor+1,it);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u;cin>>u;
int k;cin>>k;
while(k--)
{
int v;cin>>v;
//记录u有一个子节点v
nodes[u].son.push_back(v);
}
}
dfs(1,1);
for(int i=1;i<=maxf;i++)
{
cout<<s[i];
if(i!=maxf)cout<<' ';
}
return 0;
}