Please sign in first.
Submission #12625049
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll inf = 1e18;
int N;
vector<ll> A;
vector<vector<int>> edge;
vector<ll> ans;
vector<stack<pair<ll, int>>> dp;
void dfs(int now, int pre, int premx) {
int l = 0, r = N+1;
while (r-l > 1) {
int c = (l+r)/2;
if (dp[c].top().first < A[now]) l = c;
else r = c;
}
int mx = max(premx, l+1);
ans[now] = mx;
bool stacked = false;
if (dp[l+1].top().first > A[now]) {
dp[l+1].push({A[now], now});
stacked = true;
}
for (int nxt : edge[now]) {
if (nxt == pre) continue;
dfs(nxt, now, mx);
}
if (stacked) {
dp[l+1].pop();
}
return;
}
int main() {
cin >> N;
A.resize(N+1);
edge.resize(N+1);
dp.resize(N+1);
ans.resize(N+1, 0);
ans[0] = 1;
for (int i = 0; i < N; i++) cin >> A[i+1];
for (int i = 0; i < N-1; i++) {
int u, v;
cin >> u >> v;
edge[u].push_back(v);
edge[v].push_back(u);
}
dp[0].push({0, -1});
for (int i = 1; i <= N; i++) {
dp[i].push({inf, -1});
}
dfs(1, -1, 0);
for (int i = 1; i <= N; i++) {
cout << ans[i] << "\n";
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - LIS on Tree |
| User | hitoare |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 1302 Byte |
| Status | AC |
| Exec Time | 354 ms |
| Memory | 172480 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | Sample_01.txt |
| All | Sample_01.txt, caterpillar_01.txt, ni_01.txt, ni_02.txt, ni_03.txt, path_02.txt, path_04.txt, path_07.txt, path_08.txt, rand_01.txt, rand_02.txt, rand_03.txt, rand_04.txt, rand_05.txt, rand_large_01.txt, same_01.txt, star_01.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| Sample_01.txt | AC | 2 ms | 3384 KiB |
| caterpillar_01.txt | AC | 344 ms | 157724 KiB |
| ni_01.txt | AC | 2 ms | 3396 KiB |
| ni_02.txt | AC | 2 ms | 3400 KiB |
| ni_03.txt | AC | 2 ms | 3320 KiB |
| path_02.txt | AC | 354 ms | 165896 KiB |
| path_04.txt | AC | 343 ms | 154564 KiB |
| path_07.txt | AC | 341 ms | 159020 KiB |
| path_08.txt | AC | 354 ms | 164568 KiB |
| rand_01.txt | AC | 13 ms | 3420 KiB |
| rand_02.txt | AC | 2 ms | 3376 KiB |
| rand_03.txt | AC | 2 ms | 3448 KiB |
| rand_04.txt | AC | 2 ms | 3388 KiB |
| rand_05.txt | AC | 2 ms | 3356 KiB |
| rand_large_01.txt | AC | 350 ms | 150864 KiB |
| same_01.txt | AC | 322 ms | 172480 KiB |
| star_01.txt | AC | 325 ms | 151432 KiB |