MAGCARI

45 Bicycle

Aug 2nd, 2022
1,214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. /*
  2.     Task    : 48 Bicycle
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 30 July 2022 [11:03]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. struct A{
  10.     int u,v,w;
  11.     bool operator < (const A&o) const{
  12.         return w>o.w;
  13.     }
  14. };
  15. vector<A > edges;
  16. int p[100010];
  17. map<int ,int > mapp;
  18. int fr(int u){
  19.     if(u == p[u])   return u;
  20.     else            return p[u] = fr(p[u]);
  21. }
  22. int main(){
  23.     int q,m,n,num,u,v,w,cnt = 0;
  24.     scanf("%d",&q);
  25.     while(q--){
  26.         scanf("%d %d",&m,&n);
  27.         for(int i=1;i<=m;i++){
  28.             scanf("%d",&num);
  29.             mapp[num] = i;
  30.             p[i] = i;
  31.         }
  32.         for(int i=1;i<=n;i++){
  33.             scanf("%d %d %d",&u,&v,&w);
  34.             edges.push_back({mapp[u],mapp[v],w});
  35.         }
  36.         sort(edges.begin(),edges.end());
  37.         for(auto x:edges){
  38.             int ru = fr(x.u),rv = fr(x.v);
  39.             if(ru != rv){
  40.                 p[rv] = ru;
  41.             }else{
  42.                 cnt+=x.w;
  43.             }
  44.         }
  45.         printf("%d\n",cnt);
  46.         edges.clear();
  47.         cnt = 0;
  48.     }
  49.     return 0;
  50. }
  51. /*
  52.  
  53. */
Advertisement
Add Comment
Please, Sign In to add comment