Beingamanforever

982 Div 2C

Oct 26th, 2024
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());
  4. #define NeedForSpeed                  \
  5.     ios_base::sync_with_stdio(false); \
  6.     cin.tie(NULL);                    \
  7.     cout.tie(NULL);
  8. #define int long long
  9. #define all(x) (x).begin(), (x).end()
  10. typedef vector<int> vi;
  11. typedef vector<bool> vb;
  12. typedef vector<vi> vvi;
  13. typedef vector<pair<int, int>> vpi;
  14. #define f first
  15. #define s second
  16. #define endl "\n"
  17. const int mod = 1000000007;
  18. int n;
  19. vi v;
  20. map<int, set<int>> adj;
  21. set<int> visited;
  22. int maxi = 0;
  23. void dfs(int node)
  24. {
  25.     maxi = max(maxi, node);
  26.     visited.insert(node);
  27.     if (adj.count(node))
  28.     {
  29.         for (auto &i : adj[node])
  30.         {
  31.             if (!visited.count(i))
  32.             {
  33.                 dfs(i);
  34.             }
  35.         }
  36.     }
  37. }
  38. void solve()
  39. {
  40.     cin >> n;
  41.     v.resize(n);
  42.     adj.clear();
  43.     visited.clear();
  44.     for (int i = 0; i < n; i++)
  45.     {
  46.         cin >> v[i];
  47.         int temp1 = v[i] + i;
  48.         int temp2 = temp1 + i;
  49.         if (i > 0)
  50.         {
  51.             adj[temp1].insert(temp2);
  52.         }
  53.     }
  54.     maxi = 0;
  55.     dfs(n);
  56.     cout << maxi << endl;
  57. }
  58.  
  59. signed main()
  60. {
  61.     NeedForSpeed;
  62.     int t;
  63.     cin >> t;
  64.     while (t--)
  65.     {
  66.         solve();
  67.     }
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment