- BC20260050's blog
..
- 2024-11-13 10:21:10 @
#include<bits/stdc++.h> using namespace std; #define int long long const int N=2e5+10; int n,c[N],fa[N],cnt,cnt2,fa[N]; vector v[N]; struct node{ int num,u,v,w; }e[N]; struct node{ int l,r; }a[N]; bool cmp(node x,node y){ return x<y; } void dfs(int x,int fa){ if(e[x].size()==1&&e[x][1]fa){ a[x].l=++cnt2; a[x].r=cnt2; return ; } a[x].l=1e9; a[x].r=0; for(int i=0;i<e[x].size();i++){ int y=e[x][i]; if(yfa)return ; a[x].l=min(a[x].l,a[y].l); a[x].r=max(a[x].r,a[y].r); } e[++cnt]=(node){x,a[x].l,a[x].r+1,c[x]}; } signed main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&c[i]); } for(int i=1;i<n;i++){ int u,v; scanf("%lld %lld",&u,&v); e[u].push_back(v); e[v].push_back(u); } dfs(1,1); sort(e+1,e+cnt+1); for(int i=1;i<=cnt;i++){
}
return 0;
}