Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define pb push_back
- #define eb emplace_back
- const int MAX=1e5+10;
- const ll inf=INFINITY;
- ll n,m;
- ll dis[MAX];
- ll par[MAX];
- typedef struct
- {
- ll u,v,w;
- }node;
- vector<node>adj;
- bool cmp(node a,node b)
- {
- return a.w<b.w;
- }
- ll Find(ll n)
- {
- if(par[n]==n)
- return n;
- else return par[n]=Find(par[n]);
- }
- ll krushkal()
- {
- ll ans=0,p1=0,p2=0,cnt=0,sum=0;
- for(ll i=0;i<=n;i++)
- {
- par[i]=i;
- }
- for(ll i=0;i<adj.size();i++)
- {
- p1=Find(adj[i].u);
- p2=Find(adj[i].v);
- if(p1!=p2)
- {
- par[p1]=p2;
- cnt++;
- sum+=adj[i].w;
- if(cnt==n-1)
- break;
- }
- }
- return sum;
- }
- int main()
- {
- cin>>n>>m;
- for(ll i=0;i<m;i++)
- {
- ll a,b,c;
- cin>>a>>b>>c;
- node q;
- q.u=a;
- q.v=b;
- q.w=c;
- adj.push_back(q);
- }
- sort(adj.begin(),adj.end(),cmp);
- cout<<krushkal()<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement