5
int findParent(int n) {6
if (parent[n] == n) return n;7
return parent[n] = findParent(parent[n]);10
string smallestStringWithSwaps(string s, vector<vector<int>> &pairs) {11
map<int, set<int>> mp;12
parent.resize(s.size());15
for (int i = 0; i < s.length(); i++) parent[i] = i;17
for (auto pair : pairs) {18
int p1 = findParent(pair[0]), p2 = findParent(pair[1]);19
if (p1 != p2) parent[p2] = p1;22
for (auto pair : pairs) {23
int p = findParent(pair[0]);24
mp[p].insert(pair[0]);25
mp[p].insert(pair[1]);30
set<int> idx = it.second;32
for (auto index : idx) part.push_back(s[index]);34
sort(part.begin(), part.end());36
auto index = idx.begin();37
for (auto x : part) ans[*index] = x, ++index;