Ankit_132

C

Nov 26th, 2023
580
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define _test   int _TEST; cin>>_TEST; while(_TEST--)
  6. #define pb     push_back
  7.  
  8. int main()
  9. {
  10.     _test
  11.     {
  12.         int n;
  13.         cin>>n;
  14.  
  15.         string s;
  16.         cin>>s;
  17.  
  18.         vector<int> l(n), r(n);
  19.  
  20.         for(int i=0; i<n; i++)
  21.             cin>>l[i]>>r[i];
  22.  
  23.         vector<int> ans(n);
  24.  
  25.         vector<int> ll(n, -1), rr(n, -1);
  26.  
  27.         for(int i=0; i<n; i++)
  28.         {
  29.             if(l[i]==0 && r[i]==0)
  30.                 ans[i] = 0;
  31.             else
  32.                 ans[i] = 1e9;
  33.  
  34.             if(l[i])
  35.                 ll[l[i]-1] = i;
  36.             if(r[i])
  37.                 rr[r[i]-1] = i;
  38.         }
  39.  
  40.         set<pair<int, int>> sp;
  41.  
  42.         for(int i=0; i<n; i++)
  43.             sp.insert({ans[i], i});
  44.  
  45.         while(sp.size())
  46.         {
  47.             auto [x, i] = *sp.begin();
  48.             sp.erase(sp.begin());
  49.  
  50.             if(x > ans[i])      continue;
  51.  
  52.             if(ll[i] != -1)
  53.             {
  54.                 if(ans[ll[i]] > x+(s[ll[i]]!='L'))
  55.                 {
  56.                     ans[ll[i]] = x+(s[ll[i]]!='L');
  57.                     sp.insert({ans[ll[i]], ll[i]});
  58.                 }
  59.             }
  60.  
  61.             if(rr[i] != -1)
  62.             {
  63.                 if(ans[rr[i]] > x+(s[rr[i]]!='R'))
  64.                 {
  65.                     ans[rr[i]] = x+(s[rr[i]]!='R');
  66.                     sp.insert({ans[rr[i]], rr[i]});
  67.                 }
  68.             }
  69.         }
  70.  
  71.         cout<<ans[0]<<"\n";
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment