Saturday, 4 April 2026

SDE kruskla's Algorithm

 class UnionBySize{

  public:

  vector<int>parent;

  vector<int>size;

  UnionBySize(int s){

      parent.resize(s);

      size.resize(s,1);

      for(int i=0;i<s;i++){

          parent[i]=i;

      }

  }

  bool Union(int node,int nei){

      int p1=getParent(node);

      int p2=getParent(nei);

      if(p1==p2)return false;

      int s1=size[p1];

      int s2=size[p2];

      

      if(s1>s2)

      {

          parent[p2]=node;

          size[p1]+=size[p2];

      }

      else {

          parent[p1]=nei;

          size[p2]+=size[p1];

      }

      return true;

  }

  int getParent(int node){

      if(parent[node]==node)return node;

      return parent[node]=getParent(parent[node]);

  }

};

class Solution {

  public:

    

    int spanningTree(int V, vector<vector<int>>& edges) {

        // code here

        sort(edges.begin(), edges.end(), [](vector<int> &a, vector<int> &b) {

        return a[2] < b[2];   // ascending

        });

        UnionBySize u(V);

        int ans=0;

        for(auto e:edges){

            bool res=u.Union(e[0],e[1]);

            if(res)ans+=e[2];

        }

        return ans;

        

        

        

    }

};

No comments:

Post a Comment

SDE kruskla's Algorithm

 class UnionBySize{   public:   vector<int>parent;   vector<int>size;   UnionBySize(int s){       parent.resize(s);       size.r...