#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 time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
81 ms |
340 KB |
Output is correct |
3 |
Correct |
44 ms |
340 KB |
Output is correct |
4 |
Correct |
25 ms |
340 KB |
Output is correct |
5 |
Correct |
13 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
52 ms |
9492 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
468 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
73 ms |
9496 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
64 ms |
9528 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |