时间限制:1秒 内存限制:128M
题目描述
求树中每个点的儿子个数,其中节点1为根。
输入描述
第一行,一个整数n(1<=n<=10^6),表示树的节点的个数。
第二行,每行两个整数x,y,表示x是y的父亲节点。
输出描述
一行,n个整数,第i个整数为节点i的儿子个数。
样例
输入
5 1 2 1 3 1 4 2 5
输出
3 1 0 0 0
#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int head[N],vis[N],ver[N],Next[N],tot=-1,cnt;
void Add(int x,int y) {
ver[++tot]=y;
Next[tot]=head[x];
head[x]=tot;
}
int main(){
memset(head,-1,sizeof(head));
int n,x,y;
cin>>n;
for(int i=1; i<=n-1; i++) {
cin>>x>>y;
Add(x,y);
}
for(int i=1; i<=n; i++) {
cnt=0;
for(int j=head[i]; j!=-1; j=Next[j]) {
cnt++;
}
cout<<cnt<<endl;
}
return 0;
}