Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int parent[100001],size[100001],d[100001], a[100001];
  4. string k;
  5. void make_set (int v) {
  6. parent[v] = v;
  7. size[v] = 1;
  8. }
  9. int find_set (int v) {
  10. if (v == parent[v])
  11. return v;
  12. return parent[v] = find_set (parent[v]);
  13. }
  14.  
  15. void union_sets (int a, int b) {
  16. a = find_set (a);
  17. b = find_set (b);
  18. if (a != b) {
  19. if (size[a] < size[b])
  20. swap (a, b);
  21. parent[b] = a;
  22. size[a] += size[b];
  23. }
  24. }
  25.  
  26.  
  27. int main (){
  28. int n , m;
  29. cin >> n >> m;
  30.  
  31. int b , c;
  32.  
  33. for (int i = 1; i <= n; i++)
  34. make_set(i);
  35.  
  36. for (int i = 1; i <= m; i++) {
  37. cin >> k;
  38.  
  39. if (k == "Q") {
  40. int d1;
  41. cin >> d1;
  42. int ch = find_set(d1);
  43. cout << size[ch] << endl;
  44. }
  45. else {
  46. cin >> c >> b;
  47. union_sets(c,b);
  48.  
  49. }
  50.  
  51. }
  52.  
  53.  
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement