Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #pragma GCC target ("avx2")
- #pragma GCC optimization ("O3")
- #pragma GCC optimization ("unroll-loops")
- #define ll long long
- #define MOD 1000000007;
- #define got cout<<"Yes\n"; return;
- #define got0 cout<<"Yes\n"; return 0;
- #define bhak cout<<"No\n"; return;
- #define bhak0 cout<<"No\n"; return 0;
- #define bas cout<<"\n";
- #define RADHE_KRISHNA ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
- vector<ll> vvvvvvvvvvvvvvvvv;
- void solve();
- int main() {
- RADHE_KRISHNA
- ll t;
- t=1;
- cin>>t;
- while(t--){
- solve();
- }
- return 0;
- }
- ll dfs(ll i, ll &c, vector<vector<ll>> &gra, vector<bool> &vis, vector<ll> &pos, vector<ll> &vec){
- vis[i] = 1;
- ll ans = 0;
- for(auto a : gra[i]){
- if(!vis[a]){
- if(vec[a]==c){
- ans += 1 + dfs(a, c, gra, vis, pos, vec);
- }
- else{
- ans += dfs(a, c, gra, vis, pos, vec);
- }
- }
- }
- if(vec[i]==c){
- pos[i] = ans;
- }
- return ans;
- }
- void solve(){
- ll n; cin>>n;
- vector<ll> vec(n);
- for(ll i=0; i<n; ++i){
- char c; cin>>c;
- vec[i] = c-'a';
- }
- vector<vector<ll>> gra(n);
- for(ll i=0; i<n-1; ++i){
- ll a, b; cin>>a>>b;
- a--, b--;
- gra[a].push_back(b);
- gra[b].push_back(a);
- }
- vector<ll> pos(n, 0);
- for(ll i=0; i<26; ++i){
- vector<bool> vis(n+1, 0);
- dfs(0, i, gra, vis, pos, vec);
- }
- for(auto a : pos){
- cout<<a+1<<" ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment