| 4997 | 2023-04-08 16:43:44 | TomaSajt | Különböző katicák | cpp17 | Elfogadva 100/100 | 89ms | 36176 KiB |
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> subordinates;
vector<int> boss, spots, parity, range_start, range_end;
bool impossible = false;
void range_dfs(int u) {
for (int v : subordinates[u]) {
range_dfs(v);
range_start[u] = max(range_start[u], range_start[v] - 1);
range_end[u] = min(range_end[u], range_end[v] + 1);
if (parity[u] == -1 && parity[v] != -1)
parity[u] = !parity[v];
if (parity[u] != -1 && parity[u] == parity[v])
impossible = true;
}
if (range_start[u] > range_end[u])
impossible = true;
}
void fill_dfs(int u) {
if (spots[u] == -1) {
int bs = spots[boss[u]];
spots[u] = bs + 1 <= range_end[u] ? bs + 1 : bs - 1;
}
for (int v : subordinates[u])
fill_dfs(v);
}
int main() {
int n;
cin >> n;
subordinates.resize(n + 1);
boss.resize(n + 1);
spots.resize(n + 1);
parity.resize(n + 1, -1);
range_start.resize(n + 1, INT_MIN / 2);
range_end.resize(n + 1, INT_MAX / 2);
for (int i = 1; i <= n; i++) {
cin >> boss[i];
subordinates[boss[i]].push_back(i);
}
for (int i = 1; i <= n; i++) {
cin >> spots[i];
if (spots[i] != -1) {
parity[i] = spots[i] % 2;
range_start[i] = range_end[i] = spots[i];
}
}
range_dfs(1);
if (impossible) {
cout << "NEM";
return 0;
}
fill_dfs(1);
cout << "IGEN\n";
for (int i = 1; i <= n; i++)
cout << spots[i] << ' ';
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 3ms | 1876 KiB | ||||
| 2 | Elfogadva | 3ms | 2120 KiB | ||||
| 3 | Elfogadva | 74ms | 13296 KiB | ||||
| subtask2 | 10/10 | ||||||
| 4 | Elfogadva | 64ms | 12352 KiB | ||||
| 5 | Elfogadva | 70ms | 13660 KiB | ||||
| 6 | Elfogadva | 75ms | 14512 KiB | ||||
| 7 | Elfogadva | 82ms | 15760 KiB | ||||
| subtask3 | 15/15 | ||||||
| 8 | Elfogadva | 71ms | 35360 KiB | ||||
| 9 | Elfogadva | 71ms | 35004 KiB | ||||
| 10 | Elfogadva | 89ms | 36176 KiB | ||||
| 11 | Elfogadva | 86ms | 35524 KiB | ||||
| 12 | Elfogadva | 82ms | 34716 KiB | ||||
| 13 | Elfogadva | 83ms | 35632 KiB | ||||
| 14 | Elfogadva | 79ms | 34428 KiB | ||||
| subtask4 | 35/35 | ||||||
| 15 | Elfogadva | 3ms | 4092 KiB | ||||
| 16 | Elfogadva | 3ms | 4168 KiB | ||||
| 17 | Elfogadva | 3ms | 4352 KiB | ||||
| 18 | Elfogadva | 3ms | 4284 KiB | ||||
| 19 | Elfogadva | 3ms | 4540 KiB | ||||
| 20 | Elfogadva | 3ms | 4500 KiB | ||||
| 21 | Elfogadva | 3ms | 4492 KiB | ||||
| 22 | Elfogadva | 3ms | 4568 KiB | ||||
| subtask5 | 40/40 | ||||||
| 23 | Elfogadva | 74ms | 15792 KiB | ||||
| 24 | Elfogadva | 65ms | 16312 KiB | ||||
| 25 | Elfogadva | 68ms | 16836 KiB | ||||
| 26 | Elfogadva | 75ms | 15952 KiB | ||||
| 27 | Elfogadva | 75ms | 15960 KiB | ||||
| 28 | Elfogadva | 81ms | 16928 KiB | ||||
| 29 | Elfogadva | 79ms | 16872 KiB | ||||
| 30 | Elfogadva | 78ms | 16624 KiB | ||||
| 31 | Elfogadva | 76ms | 16816 KiB | ||||
| 32 | Elfogadva | 79ms | 16748 KiB | ||||
| 33 | Elfogadva | 83ms | 17516 KiB | ||||