题意:输入一个n,接下来有n-1行。
 输入父亲和儿子
 求n个人,每个人的直系后代有多少。
 思路:vector建临接矩阵。
using namespace std;
const ll maxn = 1e5 + 5;
//ll a[maxn],b[maxn];
bool vis[maxn];
int ans[maxn];
vector<int>a[maxn];
int n, m;
int dfs(int u) {
    int res = 0;
    for(int i = 0; i < a[u].size(); i++) { //这里不要搞混  是临接矩阵,所以是从0开始的列
        res += dfs(a[u][i]);
    }
    ans[u] = res;
    return res + 1;
}
int main() {
    int x, y;
    cin >> n;
    for(int i = 0; i < n - 1; i++) {
        cin >> x >> y;
        a[x].push_back(y);//建立一个临接矩阵//a[x][0]=y1, a[x][1]=y2;这是从0开始记推的的。
        vis[y] = 1;
    }
    int u;
    for(int i = 1; i <= n; i++) {
        if(!vis[i]) { //找到父亲
            u = i;
            break;
        }
    }
    dfs(u);
    for(int i = 1; i <= n; i++)
        cout << ans[i] << endl;
    return 0;
}                
                









