# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
135697 | khsoo01 | Cat in a tree (BOI17_catinatree) | C++11 | 591 ms | 173944 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
const int N = 200005, B = 300;
int n, d, ans;
vector<int> dt[N], adj[N], tmp;
void sol1 (int C) {
dt[C].push_back(d);
int S = 1;
for(auto &T : adj[C]) {
sol1(T);
int M = 0; tmp.clear();
for(int i=0;i<dt[T].size();i++) {
int D1 = dt[T][i] + 1;
if(D1 >= d) M = max(M, i);
for(int j=0;j<dt[C].size();j++) {
int D2 = dt[C][j];
if(D1 + D2 >= d) {
int V = min(D1, D2);
if(tmp.size() <= i+j) tmp.push_back(V);
else tmp[i+j] = max(tmp[i+j], min(D1, D2));
}
}
}
for(int i=0;i<tmp.size();i++) {
if(dt[C].size() <= i) dt[C].push_back(tmp[i]);
else dt[C][i] = max(dt[C][i], tmp[i]);
}
S += M;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |