rt,代码:
#include<bits/stdc++.h>
using namespace std;
int n,w,e;
vector<int> q[1000009];
char a[1000009];
string ans=" ";
int rev(char c){
return int(c-'a'+1);
}
string now;
void dfs(int k,int dad,string &now){
now+=a[k];
int Max=0;
for(int i=0;i<q[k].size();i++) if(q[k][i]!=dad) Max=max(Max,rev(a[q[k][i]]));
for(int i=0;i<q[k].size();i++){
if(rev(a[q[k][i]])==Max&&q[k][i]!=dad){
dfs(q[k][i],k,now);
}
}
if(ans<now) ans=now;
now.pop_back();
return;
}
int main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.flush();
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++){
cin>>w>>e;
q[e].push_back(w);
q[w].push_back(e);
}
dfs(1,-1,now);
cout<<ans;
return 0;
}