Submission #674243

#TimeUsernameProblemLanguageResultExecution timeMemory
674243mdubRace (IOI11_race)C++14
9 / 100
55 ms9052 KiB
#include <bits/stdc++.h> using namespace std; struct Edge { int to; int weight; }; int n; int k; vector<vector<Edge>> g; vector<bool> seen; map<int, stack<int>> mp; vector<int> weights; int ans; void dfs(int iNode, int sum, int stage) { seen[iNode] = true; mp[sum].push(stage); if (!mp[sum- k].empty()) ans = min(ans, stage - mp[sum- k].top()); for (auto adj: g[iNode]) { if (!seen[adj.to]) { dfs(adj.to, sum+adj.weight, stage + 1); } } mp[sum].pop(); } int best_path(int n2, int k2, int h[][2] , int l[] ) { n = n2; k = k2; g.resize(n); seen.assign(n, 0); ans = 1e9; for (int i = 0; i < n - 1; i++) { int n1 = h[i][0], n2 = h[i][1]; g[n1].push_back({n2, l[i]}); g[n2].push_back({n1, l[i]}); } dfs(0, 0, 0); if (ans == 1e9) return -1; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...