func_code_string: #include<bits/stdc++.h>   #define maxn 200005   #define endl   n    using namespace std;       int n,m,a[maxn],dis[maxn];   vector<int> e[maxn];       queue<int> q;       void bfs()   {    while(!q.empty())    {     int u=q.front();     q.pop();     for(int i=0;i<e[u].size();i++)     {      int v=e[u][i];      if(dis[v]!=-1) continue;      dis[v]=dis[u]+1;      q.push(v);     }    }   }               int mx[maxn],ans[maxn],ok[maxn];   vector<int> b[maxn];       void bfs2(int tt)   {    while(!q.empty())    {     int u=q.front();     q.pop();     for(int i=0;i<e[u].size();i++)     {      int v=e[u][i];      if(ok[v]) continue;      ans[v]=max(ans[v],tt);      if(mx[v]>=mx[u]-1) continue;      mx[v]=mx[u]-1;      q.push(v);     }    }   }       signed main()   {    ios::sync_with_stdio(0);    cin>>n;    for(int i=1,u,v;i<n;i++)     {     cin>>u>>v;     e[u].push_back(v);     e[v].push_back(u);    }    cin>>m;    memset(dis,-1,sizeof(dis));    for(int i=1;i<=m;i++)     {     cin>>a[i];     ok[a[i]]=1;     dis[a[i]]=0;     q.push(a[i]);    }    bfs();    for(int i=1;i<=n;i++)     b[dis[i]].push_back(i),ans[i]=dis[i];    for(int i=n;i>=1;i--)    {     if(b[i].size()==0) continue;     while(!q.empty()) q.pop();   //  q.clear();     for(int j=0;j<b[i].size();j++)      {      q.push(b[i][j]);      if(mx[b[i][j]]>=i-1) continue;      mx[b[i][j]]=i-1;      ans[b[i][j]]=max(i,ans[b[i][j]]);     }     bfs2(i);    }    for(int i=1;i<=n;i++)     cout<<ans[i]<<   ;    cout<<endl;   }