QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#599399 | #2002. Race | iframe# | 0 | 57ms | 57064kb | C++17 | 1.3kb | 2024-09-29 04:06:31 | 2024-09-29 04:06:32 |
Judging History
answer
#include "race.h"
#include <iostream>
#include <vector>
#include <array>
using ll = long long;
std::vector<std::array<int, 2>> adj[200000];
int depth[1000];
ll dist[1000];
void dfs(int i, int p){
for(const auto &[x, d] : adj[i]) if(x != p)
depth[x] = depth[i]+1, dist[x] = dist[i]+d,
dfs(x, i);
}
int subpath[200000][101];
void dfs2(int i, int p){
for(const auto &[x, d] : adj[i]) if(x != p){
dfs2(x, i);
for(int j=0; j+d<101; ++j)
subpath[i][j+d] = std::min(subpath[i][j+d],
subpath[x][j] + 1);
}
}
int best_path(int n, int k, int h[][2], int l[]){
for(int i=0; i<n-1; ++i){
adj[h[i][0]].push_back({h[i][1], l[i]});
adj[h[i][1]].push_back({h[i][0], l[i]});
}
int best = n;
if(k <= 100){
for(int i=0; i<n; ++i)
for(int j=1; j<101; ++j)
subpath[i][j] = n;
dfs2(0, -1);
/*
for(int i=0; i<n; ++i)
for(int j=0; j<=k; ++j)
std::cout << subpath[i][j]%n << " \n"[j==k];
*/
for(int i=0; i<n; ++i)
for(int j=0; j+j<=k; ++j)
best = std::min(best,
subpath[i][j] + subpath[i][k-j]);
}else{
for(int i=0; i<n; ++i){
dist[i] = 0, depth[i] = 0;
dfs(i, -1);
for(int j=0; j<n; ++j) if(dist[j] == k)
best = std::min(best, depth[j]);
}
}
return best == n ? -1 : best;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 14284kb
input:
100 50 0 1 1 1 2 2 2 3 2 3 4 1 4 5 2 5 6 1 6 7 1 7 8 1 8 9 1 9 10 2 10 11 2 11 12 2 12 13 1 13 14 1 14 15 1 15 16 2 16 17 1 17 18 2 18 19 1 19 20 1 20 21 1 21 22 2 22 23 2 23 24 2 24 25 2 25 26 1 26 27 2 27 28 2 28 29 2 29 30 2 30 31 2 31 32 1 32 33 1 33 34 2 34 35 2 35 36 1 36 37 1 37 38 1 38 39 1 ...
output:
Incorrect. Returned 27, Expected 30.
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #39:
score: 0
Wrong Answer
time: 57ms
memory: 57064kb
input:
100000 100 1 0 1 2 1 10 3 1 1 4 3 5 5 3 6 6 5 6 7 3 10 8 5 9 9 8 7 10 9 9 11 6 7 12 6 3 13 10 10 14 9 1 15 14 7 16 15 5 17 10 1 18 14 9 19 12 8 20 18 10 21 10 9 22 12 7 23 14 9 24 15 5 25 15 2 26 20 4 27 19 10 28 17 8 29 16 8 30 24 10 31 17 2 32 28 7 33 27 8 34 21 4 35 28 7 36 22 4 37 18 6 38 27 6 3...
output:
Incorrect. Returned 10, Expected 11.
Subtask #4:
score: 0
Skipped
Dependency #1:
0%