Submission #745771

#TimeUsernameProblemLanguageResultExecution timeMemory
745771vjudge1Cities (BOI16_cities)C++17
22 / 100
195 ms468 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second struct edge { int from, to, wei; bool operator < (const edge &other) const { return wei > other.wei; } }; const int maxn = 20; const int inf = 1e16 + 42; int n, k, m; vector<edge> graph[maxn]; bool special[maxn]; int try_for(int mask) { vector<bool> vis(n, false); int start = -1; for(int i = 0; i < n; i++) { if(mask & (1 << i)) { start = i; break; } } priority_queue<edge> q; q.push({-1, start, 0}); int res = 0; while(!q.empty()) { edge e = q.top(); q.pop(); //cout << e.from << " " << e.to << " " << e.wei << "\n"; if(vis[e.to]) { continue; } vis[e.to] = true; res += e.wei; for(edge nei : graph[e.to]) { //cout << nei.to; if(mask & (1 << nei.to)) { //cout << " +1"; if(!vis[nei.to]) { //cout << " +1"; q.push(nei); } } //cout << "\n"; } } for(int i = 0; i < n; i++) { if(mask & (1 << i)) { if(!vis[i]) { return inf; } } } return res; } void solve() { cin >> n >> k >> m; for(int i = 0; i < k; i++) { int x; cin >> x; x--; special[x] = true; } for(int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; a--, b--; graph[a].pb({a, b, c}); graph[b].pb({b, a, c}); } int ans = inf; for(int mask = 0; mask < (1 << n); mask++) { bool ok = true; for(int i = 0; i < n; i++) { if(special[i] && ((mask & (1 << i)) == 0)) { ok = false; break; } } if(!ok) { continue; } int res = try_for(mask); if(ans > res) { ans = res; } } cout << ans << "\n"; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...