# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
596764 | 1bin | Chase (CEOI17_chase) | C++14 | 306 ms | 180948 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
typedef long long ll;
const int NMAX = 1e5 + 5;
ll n, k, a[NMAX], x, y, u[NMAX][105], d[NMAX][105], ans;
vector<int> adj[NMAX];
void dfs(int x, int bef){
ll sum = 0;
for(int nx : adj[x]) sum += a[nx];
u[x][1] = sum;
for(int nx : adj[x]){
if(nx == bef) continue;
dfs(nx, x);
for(int i = 1; i <= k; i++){
ans = max(ans, u[x][i] + d[nx][k - i]);
u[x][i] = max({u[x][i], u[x][i - 1], u[nx][i], u[nx][i - 1] + sum - a[nx]});
d[x][i] = max({d[x][i], d[x][i - 1], d[nx][i], d[nx][i - 1] + sum - a[bef]});
}
}
reverse(all(adj[x]));
memset(u[x], 0, sizeof(u[x]));
memset(d[x], 0, sizeof(d[x]));
u[x][1] = sum;
for(int nx : adj[x]){
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |