Submission #1230940

#TimeUsernameProblemLanguageResultExecution timeMemory
1230940zut3Race (IOI11_race)C++20
9 / 100
3095 ms40004 KiB
#include "race.h" #include<bits/stdc++.h> using namespace std; int n, k; vector<vector<pair<int, int>>> g; vector<map<int, int>> d; int mn = 2e9; bool have_ans = false; void dfs(int v, int prev) { for(auto [u, w]: g[v]) { if(prev == u) continue; dfs(u, v); for(auto [key, val]: d[u]) { if(d[v].count(key+w)) { d[v][key+w] = min(d[v][key+w], val+1); } else { d[v][key+w] = val+1; } } d[v][w] = 1; } if(d[v].count(k)) { mn = min(mn, d[v][k]); have_ans = true; } } int best_path(int N, int K, int H[][2], int L[]) { n = N; k = K; g.assign(n, vector<pair<int, int>>()); d.assign(n, map<int, int>()); for(int i = 0; i < n-1; i++) { g[H[i][0]].push_back({H[i][1], L[i]}); g[H[i][1]].push_back({H[i][0], L[i]}); } for(int v = 0; v < n; v++) { dfs(v, -1); for(int i = 0; i < n; i++) g[i].clear(); } if(have_ans) return mn; return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...