ivolff

Denis_Penis

Nov 11th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  console_her
  4. //
  5. //  Created by Святой Отец on 26.06.17.
  6. //  Copyright © 2017 Святой Отец. All rights reserved.
  7. //
  8.  
  9. #include <cstdlib>
  10. #include <fstream>
  11. #include <string>
  12.  
  13. using namespace std;
  14.  
  15. ifstream fin("dsu.in");
  16. ofstream fout("dsu.out");
  17. int n;
  18.  
  19. struct set{
  20.     int max;
  21.     int min;
  22.     int size;
  23. };
  24.  
  25. set* unions[100001];
  26.  
  27. void combine(int num1, int num2){
  28.     unions[num1]->max = unions[num2]->max;
  29.     unions[num1]->size += unions[num2]->size;
  30.     unions[num2] = unions[num1];
  31. }
  32.  
  33. void get(int num1){
  34.     fout<<unions[num1]->min<<unions[num1]->max<<unions[num1]->size;
  35. }
  36.  
  37. int main(){
  38.     int num1, num2;
  39.     fin>>n;
  40.     string command;
  41.     for(int i=0; i<n; i++){
  42.         unions[i]=new set;
  43.         unions[i]->min=i+1;
  44.         unions[i]->max=i+1;
  45.         unions[i]->size=1;
  46.     }
  47.     while(fin>>command){
  48.         switch(command[0]){
  49.             case 'u':{
  50.                 fin>>num1>>num2;
  51.                 (num1>num2)?combine(num2, num1):combine(num1, num2);
  52.             }break;
  53.             case 'g':{
  54.                 fin>>num1;
  55.                 get(num1);
  56.             }break;
  57.         }
  58.     }
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment