sandeep03edu

Parent Node

Jun 4th, 2023 (edited)
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #pragma GCC target ("avx2")
  5. #pragma GCC optimization ("O3")
  6. #pragma GCC optimization ("unroll-loops")
  7. #define ll  long long
  8. #define MOD 1000000007;
  9.  
  10. #define got cout<<"Yes\n"; return;
  11. #define got0 cout<<"Yes\n"; return 0;
  12.  
  13. #define bhak cout<<"No\n"; return;
  14. #define bhak0 cout<<"No\n"; return 0;
  15.  
  16. #define bas cout<<"\n";
  17. #define RADHE_KRISHNA ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  18.  
  19. vector<ll> vvvvvvvvvvvvvvvvv;
  20.  
  21. void solve();
  22.  
  23. int main() {
  24.     RADHE_KRISHNA
  25.  
  26.     ll t;
  27.     t=1;
  28.     cin>>t;
  29.     while(t--){
  30.         solve();
  31.     }
  32.  
  33.     return 0;
  34. }
  35.  
  36. ll dfs(ll i, ll &c, vector<vector<ll>> &gra, vector<bool> &vis, vector<ll> &pos, vector<ll> &vec){
  37.     vis[i] = 1;
  38.  
  39.     ll ans = 0;
  40.     for(auto a : gra[i]){
  41.         if(!vis[a]){
  42.             if(vec[a]==c){
  43.                 ans += 1 + dfs(a, c, gra, vis, pos, vec);
  44.             }
  45.             else{
  46.                 ans += dfs(a, c, gra, vis, pos, vec);
  47.             }
  48.         }
  49.     }
  50.  
  51.     if(vec[i]==c){
  52.         pos[i] = ans;
  53.     }
  54.  
  55.     return ans;
  56. }
  57.  
  58. void solve(){
  59.     ll n; cin>>n;
  60.     vector<ll> vec(n);
  61.  
  62.     for(ll i=0; i<n; ++i){
  63.         char c; cin>>c;
  64.         vec[i] = c-'a';
  65.     }
  66.  
  67.     vector<vector<ll>> gra(n);
  68.    
  69.     for(ll i=0; i<n-1; ++i){
  70.         ll a, b; cin>>a>>b;
  71.         a--, b--;
  72.  
  73.         gra[a].push_back(b);
  74.         gra[b].push_back(a);
  75.     }
  76.  
  77.    
  78.     vector<ll> pos(n, 0);
  79.  
  80.     for(ll i=0; i<26; ++i){
  81.         vector<bool> vis(n+1, 0);
  82.         dfs(0, i, gra, vis, pos, vec);
  83.     }
  84.  
  85.     for(auto a : pos){
  86.         cout<<a+1<<" ";
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment