# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
424842 | 2021-06-12T10:47:32 Z | blue | Harbingers (CEOI09_harbingers) | C++17 | 1000 ms | 18336 KB |
#include <iostream> #include <vector> using namespace std; const long long INF = 1'000'000'000'000'000'000LL; const int maxN = 100000; int N; vector<int> edge[maxN+1]; vector<long long> wt[maxN+1]; long long S[maxN+1], V[maxN+1]; vector<int> parent(maxN+1, -1); vector<long long> dist1(maxN+1); vector<long long> dp(maxN+1, INF); void dfs(int u) { // cerr << "dfs " << u << '\n'; for(int v = parent[u]; v != 0; v = parent[v]) { // cerr << u << ' ' << v << '\n'; dp[u] = min(dp[u], S[u] + V[u]*(dist1[u] - dist1[v]) + dp[v]); } for(int e = 0; e < edge[u].size(); e++) { int v = edge[u][e]; int d = wt[u][e]; if(parent[v] != -1) continue; parent[v] = u; dist1[v] = dist1[u] + d; dfs(v); } } int main() { cin >> N; for(int e = 1; e <= N-1; e++) { int u, v; long long d; cin >> u >> v >> d; edge[u].push_back(v); wt[u].push_back(d); edge[v].push_back(u); wt[v].push_back(d); } for(int i = 2; i <= N; i++) cin >> S[i] >> V[i]; parent[1] = 0; dist1[1] = 0; dp[1] = 0; S[1] = V[1] = 0; cerr << "check\n"; dfs(1); for(int i = 2; i <= N; i++) cout << dp[i] << '\n'; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 6972 KB | Output is correct |
2 | Correct | 24 ms | 7252 KB | Output is correct |
3 | Execution timed out | 1088 ms | 11972 KB | Time limit exceeded |
4 | Execution timed out | 1090 ms | 13872 KB | Time limit exceeded |
5 | Execution timed out | 1087 ms | 16056 KB | Time limit exceeded |
6 | Execution timed out | 1074 ms | 17788 KB | Time limit exceeded |
7 | Execution timed out | 1090 ms | 14672 KB | Time limit exceeded |
8 | Execution timed out | 1093 ms | 18148 KB | Time limit exceeded |
9 | Execution timed out | 1090 ms | 18336 KB | Time limit exceeded |
10 | Execution timed out | 1070 ms | 17860 KB | Time limit exceeded |