Advertisement
skimono

Untitled

Dec 21st, 2021
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC target("avx2")
  3.  
  4. #define _CRT_SECURE_NO_WARNINGS
  5.  
  6. #include <iostream>
  7. #include <vector>
  8. #include <string>
  9. #include <algorithm>
  10. #include <cmath>
  11. #include <stack>
  12. #include <iomanip>
  13. #include <fstream>
  14. #include <string>
  15. #include <set>
  16. #include <deque>
  17. #include <queue>
  18. #include <map>
  19. #include <bitset>
  20. #include <random>
  21.  
  22. using namespace std;
  23.  
  24. typedef long long ll;
  25. typedef unsigned long long ull;
  26. typedef long double ld;
  27. typedef string str;
  28. //typedef __int128 ultraint;
  29. #define endl "\n"
  30. #define sqrt sqrtl
  31.  
  32. const ll inf = (ll)1e18 + 7;
  33.  
  34. ld eps = 1e-12;
  35.  
  36. vector <int> p(1000005);
  37. int mas[3][1000005];
  38. int res[1000005];
  39.  
  40. int ask(int n)
  41. {
  42.     if (n == p[n])
  43.     {
  44.         return n;
  45.     }
  46.  
  47.     return p[n] = ask(p[n]);
  48. }
  49.  
  50. void cut(int x, int y)
  51. {
  52.     int x1 = ask(x);
  53.     int y1 = ask(y);
  54.  
  55.     p[x1] = y1;
  56.  
  57.     return;
  58. }
  59.  
  60. signed main()
  61. {
  62.     ios_base::sync_with_stdio(false);
  63.     cin.tie(0);
  64.     cout.tie(0);
  65.  
  66.     int n, m, q;
  67.     cin >> n >> m >> q;
  68.  
  69.     vector <vector<int>> gr(100000);
  70.  
  71.     for (int i = 0; i < m; i++)
  72.     {
  73.         int a, b;
  74.         cin >> a >> b;
  75.  
  76.         gr[a].pb(b);
  77.         gr[b].pb(a);
  78.     }
  79.  
  80.     for (int i = 0; i < q; i++)
  81.     {
  82.         string s;
  83.         cin >> s;
  84.  
  85.         int a, b;
  86.         cin >> mas[1][i] >> mas[2][i];
  87.  
  88.         if (s == "ask")
  89.         {
  90.             mas[0][i] = 1;
  91.         }
  92.         else
  93.         {
  94.             mas[0][i] = 0;
  95.         }
  96.     }
  97.  
  98.     for (int i = 1; i <= n; i++)
  99.     {
  100.         p[i] = i;
  101.     }
  102.  
  103.     for (int i = q - 1; i >= 0; i--)
  104.     {
  105.         if (mas[0][i] == 1)
  106.         {
  107.             int lol = ask(mas[1][i]);
  108.             int kek = ask(mas[2][i]);
  109.  
  110.             res[i] = (lol == kek);
  111.         }
  112.         else
  113.         {
  114.             cut(mas[1][i], mas[2][i]);
  115.         }
  116.     }
  117.  
  118.     for (int i = 0; i < q; i++)
  119.     {
  120.         if (mas[0][i] == 1)
  121.         {
  122.             if (res[i] == 1)
  123.             {
  124.                 cout << "YES" << endl;
  125.             }
  126.             else
  127.             {
  128.                 cout << "NO" << endl;
  129.             }
  130.         }
  131.     }
  132.  
  133.     return 0;
  134. }
  135.  
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement