Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Green ))
- #include<iostream>
- #include<stdio.h>
- #include<cstdlib>
- #include<math.h>
- #include<algorithm>
- #include<fstream>
- #include<string>
- #include<queue>
- #include<bitset>
- #include<stack>
- #include <cstdio>
- #include <iomanip>
- #include <cstdlib>
- #include <cmath>
- #include <vector>
- #include <set>
- #include <map>
- #include <deque>
- #include <list>
- #include <cstring>
- #include <cassert>
- #include <ctime>
- #include <complex>
- #define PI 3.141592653589793
- #define INF 1000000
- using namespace std;
- int x,y,r[200000],s=0;
- long long n,m,i,j;
- int p[2000000];
- struct name{
- int x;
- int y;
- int z;};
- name q;
- vector <name> a;
- bool func(name g,name f){
- return (g.z>f.z);
- }
- void make_set(int v){
- p[v]=v;
- r[v]=0;}
- int find_set(int v){
- if (p[v]==v)
- return v;
- return find_set(p[v]);}
- void union_set(int v,int t){
- v=find_set(v);
- t=find_set(t);
- if (v!=t){
- if (r[v]>r[t]) swap(v,t);
- p[v]=t;
- if (r[v]==r[t]) r[t]++;}}
- int main() {
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- cin>>n>>m;
- for (i=1;i<=n;i++){
- make_set(i);
- r[i]=0;}
- for (i=1;i<=m;i++){
- cin>>q.x>>q.y>>q.z;
- a.push_back(q);
- }
- sort(a.begin(),a.end(),func);
- j=1;
- x=0;
- y=0;
- long long s=0;
- while (a.size()>0){
- q=a[a.size()-1];
- if (find_set(q.x)==find_set(q.y))
- a.pop_back();
- else{
- s=s+q.z;
- union_set(q.x,q.y);
- }
- }
- cout<<s;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement