109862024-05-01 21:19:10zsomborVállalati ügyeletcpp17Elfogadva 100/100179ms74116 KiB
#include <iostream>
#include <vector>
using namespace std;

int n, mex = 1;
vector <int> p(3e5, 0);
vector <int> a(3e5, 0);
vector <vector <int>> g(3e5);
vector <int> sz(3e5, 1);
vector <int> cnt(3e5, 0);
vector <int> ans(3e5, 0);

void dfs(int x) {
	for (int i = 0; i < g[x].size();i++) {
		int& y = g[x][i];
		dfs(y);
		sz[x] += sz[y];
		if (sz[y] > sz[g[x][0]]) swap(g[x][0], y);
	}
}

void dfs_del(int x) {
	cnt[a[x]]--;
	for (int i : g[x]) dfs_del(i);
}

void del(int x) {
	mex = 1;
	dfs_del(x);
}

void add(int x) {
	cnt[a[x]]++;
	while (cnt[mex]) mex++;
}

void dfs_add(int x) {
	add(x);
	for (int i : g[x]) dfs_add(i);
}

void solve(int x) {
	for (int i = 1; i < g[x].size(); i++) {
		int& y = g[x][i];
		solve(y);
		del(y);
	}
	if (g[x].size()) solve(g[x][0]);
	for (int i = 1; i < g[x].size(); i++) {
		int& y = g[x][i];
		dfs_add(y);
	}
	add(x);
	ans[x] = mex;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> p[i];
		g[p[i]].push_back(i);
	}
	for (int i = 1; i <= n; i++) cin >> a[i];
	dfs(1);
	solve(1);
	for (int i = 1; i <= n; i++) cout << ans[i] << " ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva16ms27744 KiB
2Elfogadva107ms36868 KiB
subtask25/5
3Elfogadva13ms27916 KiB
4Elfogadva13ms28124 KiB
5Elfogadva13ms28336 KiB
6Elfogadva13ms28548 KiB
subtask38/8
7Elfogadva13ms27916 KiB
8Elfogadva13ms28124 KiB
9Elfogadva13ms28336 KiB
10Elfogadva13ms28548 KiB
11Elfogadva68ms31040 KiB
12Elfogadva68ms31180 KiB
13Elfogadva67ms31168 KiB
14Elfogadva71ms31172 KiB
subtask412/12
15Elfogadva13ms27916 KiB
16Elfogadva13ms28124 KiB
17Elfogadva13ms28336 KiB
18Elfogadva13ms28548 KiB
19Elfogadva104ms72816 KiB
20Elfogadva107ms73020 KiB
21Elfogadva114ms73404 KiB
22Elfogadva118ms73464 KiB
23Elfogadva108ms73268 KiB
24Elfogadva108ms73256 KiB
subtask517/17
25Elfogadva13ms27916 KiB
26Elfogadva13ms28124 KiB
27Elfogadva13ms28336 KiB
28Elfogadva13ms28548 KiB
29Elfogadva18ms29476 KiB
30Elfogadva14ms30000 KiB
31Elfogadva16ms30188 KiB
32Elfogadva14ms29740 KiB
33Elfogadva16ms29776 KiB
34Elfogadva14ms29656 KiB
35Elfogadva14ms29616 KiB
36Elfogadva13ms29620 KiB
37Elfogadva14ms30072 KiB
38Elfogadva14ms29876 KiB
39Elfogadva14ms29924 KiB
40Elfogadva13ms29924 KiB
41Elfogadva13ms29960 KiB
subtask628/28
42Elfogadva108ms37020 KiB
43Elfogadva104ms40468 KiB
44Elfogadva104ms47472 KiB
45Elfogadva107ms56396 KiB
46Elfogadva108ms64368 KiB
47Elfogadva109ms70644 KiB
48Elfogadva71ms32320 KiB
49Elfogadva116ms74116 KiB
50Elfogadva115ms74088 KiB
subtask730/30
51Elfogadva12ms30124 KiB
52Elfogadva104ms38968 KiB
53Elfogadva13ms27916 KiB
54Elfogadva13ms28124 KiB
55Elfogadva13ms28336 KiB
56Elfogadva13ms28548 KiB
57Elfogadva68ms31040 KiB
58Elfogadva68ms31180 KiB
59Elfogadva67ms31168 KiB
60Elfogadva71ms31172 KiB
61Elfogadva104ms72816 KiB
62Elfogadva107ms73020 KiB
63Elfogadva114ms73404 KiB
64Elfogadva118ms73464 KiB
65Elfogadva108ms73268 KiB
66Elfogadva108ms73256 KiB
67Elfogadva18ms29476 KiB
68Elfogadva14ms30000 KiB
69Elfogadva16ms30188 KiB
70Elfogadva14ms29740 KiB
71Elfogadva16ms29776 KiB
72Elfogadva14ms29656 KiB
73Elfogadva14ms29616 KiB
74Elfogadva13ms29620 KiB
75Elfogadva14ms30072 KiB
76Elfogadva14ms29876 KiB
77Elfogadva14ms29924 KiB
78Elfogadva13ms29924 KiB
79Elfogadva13ms29960 KiB
80Elfogadva108ms37020 KiB
81Elfogadva104ms40468 KiB
82Elfogadva104ms47472 KiB
83Elfogadva107ms56396 KiB
84Elfogadva108ms64368 KiB
85Elfogadva109ms70644 KiB
86Elfogadva71ms32320 KiB
87Elfogadva116ms74116 KiB
88Elfogadva115ms74088 KiB
89Elfogadva163ms36748 KiB
90Elfogadva179ms36792 KiB
91Elfogadva165ms36860 KiB
92Elfogadva179ms36868 KiB
93Elfogadva118ms47364 KiB
94Elfogadva112ms56504 KiB
95Elfogadva116ms65408 KiB
96Elfogadva104ms40160 KiB
97Elfogadva108ms41640 KiB
98Elfogadva108ms44888 KiB
99Elfogadva109ms39440 KiB
100Elfogadva104ms43752 KiB
101Elfogadva112ms51884 KiB