Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<vector>
  3. #include<algorithm>
  4. using namespace std;
  5. struct D{
  6.     int x,y,dis;
  7. };
  8. bool cmp(D u, D v){
  9.     return u.dis < v.dis;
  10. }
  11. vector<int> a;
  12. vector<D> x;
  13. int root(int n)
  14. {
  15.     if(a[n]!=n)return a[n]=root(a[n]);
  16.     return a[n];
  17. }
  18. int main()
  19. {
  20.     int n,m;
  21.     while(scanf("%d%d",&n,&m)!=EOF)
  22.     {
  23.         int cnt=0;
  24.         long long d=0;
  25.         a.resize(n);
  26.         x.resize(m);
  27.         for(int i=0;i<n;i++)a[i]=i;
  28.         for(int i=0;i<m;i++)
  29.         {
  30.             scanf("%d%d%d",&x[i].x,&x[i].y,&x[i].dis);
  31.             //if(x[i].x>x[i].y)swap(x[i].x,x[i].y);
  32.         }
  33.         sort(x.begin(),x.end(), cmp);
  34.         for(int i=0;i<m;i++)
  35.         {
  36.             int r_x=root(x[i].x),r_y=root(x[i].y),m=min(r_x,r_y);
  37.             if(r_x==r_y)continue;
  38.             else
  39.             {
  40.                 cnt++;
  41.                 d+=(long long)x[i].dis;
  42.                 a[r_x] = r_y;
  43.             }
  44.             if(cnt==n-1)break;
  45.         }
  46.         if(cnt<n-1)puts("-1");
  47.         else printf("%lld\n",d);
  48.     }
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement