Submission #640636

#TimeUsernameProblemLanguageResultExecution timeMemory
640636andecaandeciCities (BOI16_cities)C++17
22 / 100
81 ms9528 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define db double #define pairll pair<ll,ll> #define lpairll pair<ll,pairll> #define repp(i,a,b) for (ll i = a; i <= b; i++) #define repz(i,a,b) for (ll i = a; i < b; i++) #define repm(i,a,b) for (ll i = a; i >= b; i--) #define fr first #define sc second #define mp make_pair #define pb push_back const ll N = 1e5+5, MOD = 1e9+7; ll tc = 1, n, m, ar[N], br[N], used[N]; ll x, y, k; string s, s1, s2, ye = "YES", no = "NO"; vector<pairll> v; vector<lpairll> V; void input(){ cin >> n >> k >> m; repp(i,1,k) cin >> ar[i], used[ar[i]] = 1; repp(i,1,m){ ll x, y, w; cin >> x >> y >> w; V.pb(mp(w,mp(x,y))); } } ll pr[N]; ll fir(ll i){ if (i == pr[i]) return i; return pr[i] = fir(pr[i]); } bool merge(ll a, ll b){ a = fir(a), b = fir(b); if (a == b) return 0; pr[a] = b; return 1; } void sub1(){ //create an mst with the nodes that are active vector<ll> act; repp(i,1,n){ if (!used[i]) act.pb(i); } ll sz = act.size(), ans = 1e18; repp(i,0,(1<<sz)){ repz(j,0,sz){ if((1<<j)&i) used[act[j]] = 1; else used[act[j]] = 0; } // cout << "i = " << i << endl; // repp(j,1,n){ // cout << j << " " << used[j] << endl; // } ll cur = 0; repp(j,1,n) pr[j] = j; for (auto j : V){ ll w = j.fr, x = j.sc.fr, y = j.sc.sc; if (!used[x] || !used[y]) continue; if(merge(x,y)) cur += w; } // repp(j,1,n){ // cout << j << " " << fir(j) << endl; // } bool imp = 0; repp(j,1,k){ imp |= (fir(ar[j]) != fir(ar[1])); } if (imp) continue; ans = min(ans,cur); } cout << ans << endl; } void solve(){ if (n <= 20 && m <= 40){ sort(V.begin(),V.end()); sub1(); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); //cin >> tc; while(tc--){ input(); solve(); } }
#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...