PAT1004

来源:互联网 发布:比特币闪电网络交易所 编辑:程序博客网 时间:2024/06/06 14:14

1004. Counting Leaves (30)


英语不好,理解错了题意。学英语的重要性啊...

其实就是找每层叶子节点的个数,深搜一遍就行了


#include<iostream>#include<cstdio>#include<string.h>using namespace std;const int N=502;int start[N],cnt=0,ans[N];struct edge{int v,next;}e[N*N];void add(int u,int v){//u->ve[cnt].v=v;e[cnt].next=start[u];start[u]=cnt++;}int maxcen=-1;void dfs(int rt,int cen){maxcen=max(maxcen,cen);if(start[rt]==-1){//没有孩子-该层叶子节点增加ans[cen]++;return;}for(int i=start[rt];i!=-1;i=e[i].next){int nv=e[i].v;dfs(nv,cen+1);}}int main(){int n,m;cin>>n>>m;for(int i=0;i<=n;i++)start[i]=-1;for(int i=0,f,k,s;i<m;i++){scanf("%2d %d",&f,&k);while(k--){scanf("%2d",&s);add(f,s);}}dfs(1,0);int first=0;for(int i=0;i<=maxcen;i++){if(first)  printf(" %d",ans[i]);elsefirst=1,printf("%d",ans[i]);}return 0;}/*统计 树的每层的叶子节点个数一个节点没有孩子则称为叶子节点*/


0 0