Advertisement
asdfg0998

dwd

Nov 5th, 2024
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. auto unionGroups = [&](int a, int b, int time) {
  2.             int rootA = find(a);
  3.             int rootB = find(b);
  4.             if (rootA != rootB) {
  5.                 // Merge lower rank root into higher rank root
  6.                 if (rank[rootA] > rank[rootB]) {
  7.                     parent[rootB] = rootA;
  8.                     if (infectionTime[rootA] != -1 && infectionTime[rootB] == -1 && !vaccinated[rootB]) {
  9.                         infectionTime[rootB] = time;
  10.                     }
  11.                 } else if (rank[rootA] < rank[rootB]) {
  12.                     parent[rootA] = rootB;
  13.                     if (infectionTime[rootB] != -1 && infectionTime[rootA] == -1 && !vaccinated[rootA]) {
  14.                         infectionTime[rootA] = time;
  15.                     }
  16.                 } else {
  17.                     parent[rootB] = rootA;
  18.                     rank[rootA]++;
  19.                     if (infectionTime[rootA] != -1 && infectionTime[rootB] == -1 && !vaccinated[rootB]) {
  20.                         infectionTime[rootB] = time;
  21.                     } else if (infectionTime[rootB] != -1 && infectionTime[rootA] == -1 && !vaccinated[rootA]) {
  22.                         infectionTime[rootA] = time;
  23.                     }
  24.                 }
  25.             }
  26.         };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement