題目描述:
輸入一個n,接下來有n-1行。
輸入父親和兒子
求n個人,每個人的直系後代有多少。
數據樣例解釋:
1有3個直系後代(自己有2個親孩子,其中2有一個親孩子);
2有1個直系後代(4沒有直系後代了);
3沒有直系後代;
4沒有直系後代;
AC代碼:
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <vector>
#include <string.h>
#include <math.h>
using namespace std;
vector<int>a[11000];
int ans;
void dfs(int n)//計算第n個人有多少個直系後代
{
ans+=a[n].size();
for(int i=0;i<a[n].size();i++)
dfs(a[n][i]);
}
int main()
{
int n,x,y,i;
cin>>n;
for(i=0;i<n-1;i++)
{
cin>>x>>y;
a[x].push_back(y);
}
for(i=1;i<=n;i++)
{
ans=0;
dfs(i);//計算第i個人有多少個直系後代
cout<<ans<<endl;
}
return 0;
}