aboutsummaryrefslogtreecommitdiff
path: root/06_tree_algorithms/subordinates_1674.cpp
blob: 38982ce73d4d1e4194adcf862c1d41862ecdd95b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>

int f(const std::vector<std::vector<int>>& a, std::vector<int>& b, int i) {
	for (auto x : a[i]) 
		b[i] += f(a, b, x) + 1;
	return b[i];
}

int main() {
	int n, x;
	std::cin >> n;
	std::vector<std::vector<int>> a(n);
	for (int i = 1; i < n; i++) {
		std::cin >> x;
		a[x-1].push_back(i);
	}
	std::vector<int> b(n, 0);
	f(a, b, 0);
	for (auto y : b)
		std::cout << y << " ";
	std::cout << std::endl;
}

Generated with cgit - Back to sebastiano.tronto.net