fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int l[100001];
  5. int wielkosc[10001];
  6. int ile[100001];
  7.  
  8.  
  9. int f(int a){
  10. if(l[a]==a)return a;
  11. l[a]=f(l[a]);
  12. return l[a];
  13. }
  14. void u(int a, int b){
  15. a=f(a);
  16. b=f(b);
  17. if(a!=b){
  18. ile[wielkosc[a]]--;
  19. ile[wielkosc[b]]--;
  20. wielkosc[a]+=wielkosc[b];
  21. l[b]=a;
  22. ++ile[wielkosc[a]];
  23. }
  24. }
  25.  
  26. int main(){
  27.  
  28. int n, a, b;
  29. bool c;
  30. for(int i=1; i<=100000; ++i){
  31. wielkosc[i]=1;
  32. l[i]=i;
  33. ile[i]=0;
  34. }
  35. ile[1]=100000;
  36. cin >> n;
  37.  
  38. for (int i=0; i<n; ++i){
  39. cin >> c;
  40. if(c==0){
  41. cin >> a >> b;
  42. u(a, b);
  43. }else{
  44. cin >> a;
  45. cout << ile[a] << endl;
  46. }
  47. }
  48. //8 0 1 2 0 2 3 0 1 4 0 4 5 1 1 1 2 1 3 1 4
  49. return 0;
  50.  
  51. }
  52.  
Success #stdin #stdout 0.01s 5292KB
stdin
5
0 1 2
0 2 3
1 3
1 2
1 1
stdout
0
0
100000