8154 2024. 01. 12 14:49:17 szil Titkos sorozat cpp17 Elfogadva 40/40 43ms 27788 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 200'001;

int a[MAXN], ans[MAXN], timer = 1;
bool vis[MAXN];
vector<int> g[MAXN];

void dfs(int u) {
	vis[u]=1;
	for (int v : g[u]) {
		if (!vis[v]) dfs(v);
	}
	ans[u] = timer++;
}

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	int x = n, last = 0;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		if (a[i] == -1) {
			if (last) {
				g[i].emplace_back(last);
			}
			last = i;
		} else {
			g[i].emplace_back(a[i]);
		}
	}
	for (int i = 1; i <= n; i++) {
		if (a[i] != -1) g[i].emplace_back(last);
	}
	for (int i = 1; i <= n; i++) {
		if (!vis[i]) dfs(i);
	}
	for (int i = 1; i <= n; i++) {
		cout << n-ans[i]+1 << " ";
	}
	cout << "\n";
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 6ms 11332 KiB
2 Elfogadva 0/0 24ms 16092 KiB
3 Elfogadva 1/1 6ms 11932 KiB
4 Elfogadva 1/1 6ms 12104 KiB
5 Elfogadva 2/2 6ms 12132 KiB
6 Elfogadva 1/1 6ms 12172 KiB
7 Elfogadva 1/1 6ms 12208 KiB
8 Elfogadva 2/2 6ms 12352 KiB
9 Elfogadva 2/2 39ms 20448 KiB
10 Elfogadva 2/2 41ms 20620 KiB
11 Elfogadva 2/2 39ms 20664 KiB
12 Elfogadva 2/2 41ms 21080 KiB
13 Elfogadva 2/2 39ms 21276 KiB
14 Elfogadva 2/2 39ms 21840 KiB
15 Elfogadva 2/2 41ms 22652 KiB
16 Elfogadva 3/3 41ms 22856 KiB
17 Elfogadva 3/3 43ms 23372 KiB
18 Elfogadva 3/3 43ms 24036 KiB
19 Elfogadva 3/3 43ms 24812 KiB
20 Elfogadva 3/3 43ms 27788 KiB
21 Elfogadva 1/1 41ms 23296 KiB
22 Elfogadva 1/1 41ms 23608 KiB
23 Elfogadva 1/1 41ms 24108 KiB