LEXICOGRAPHICALLY MINIMAL STRING HACKEREARTH

#include<bits/stdc++.h>
using namespace std;
int const N=28;
int arr[N]={0}, mn[N]={0};

void initialise(){
    for(int i=0;i<=26;i++){
        arr[i]=i;
        mn[i]=i;
    }
    return;
}

int root(int i){
    while(i!=arr[i]){
        i=arr[i];
    }
    return i;
}

void wunion(int aint b){
    int root_a=root(a);
    int root_b=root(b);
    if(root_a==root_breturn;
    arr[root_b]=root_a;
    mn[root_a]=min(mn[root_b],mn[root_a]);
    return;
}


vector<charSolution (string Astring Cstring B) {
    initialise();

   for(int i=0;i<A.length();i++){
       int temp1=int(A[i])-97;
       int temp2=int(B[i])-97;
       wunion(temp1,temp2);
    
   }
   vector<char> ans;
   for(int i=0;i<C.length();i++){
       ans.push_back(char(mn[root(int(C[i])-97)]+97));
   }
   return ans;
}

int main() {

    ios::sync_with_stdio(0);
    cin.tie(0);
    string A;
    getline(cinA);
    string B;
    getline(cinB);
    string C;
    getline(cinC);

    vector<char> out_;
    out_ = Solution(ACB);
    for(auto x:out_cout<<x;
    cout<<endl;
}

Comments