Submission #798464

#TimeUsernameProblemLanguageResultExecution timeMemory
798464HunterXDRoadside Advertisements (NOI17_roadsideadverts)C++17
47 / 100
1083 ms6468 KiB
#include <bits/stdc++.h> using namespace std; typedef unsigned short us; typedef vector<int> vl; typedef vector<vl> vvl; #define all(x) x.begin(), x.end() #define pb push_back const char nd = '\n'; struct edge { us v; int w; }; vector<vector<edge>> graph; bitset<50001> visto, visitado; int res = 0; us dfs(us u, us p) { us cdown = 0, temp = 0; for (auto v : graph[u]) { if (v.v == p) continue; temp = dfs(v.v, u); if (temp && temp != 5) res += v.w; cdown += temp; } if (visto[u]) cdown++; return cdown; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // int n; cin >> n; graph.assign(n + 1, vector<edge>()); us u, v; int w; for (int i = 1; i < n; i++) { cin >> u >> v >> w; graph[u].pb({v, w}); graph[v].pb({u, w}); } int q; cin >> q; vector<us> a(5); while (q--) { for (auto &v : a) cin >> v, visto[v] = true; res = 0; dfs(0, -1); for (auto &v : a) visto[v] = false; cout << res << nd; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...