dfs序可以把一棵树区间化,即可以求出每个节点的管辖区间。
struct node
{
int to;
ll val;
};
vector<node> G[N];
int L[N],R[N];
int n,m,ti;
void addedge(int u,int v,ll w)
{
G[u].push_back((node){v,w});
G[v].push_back((node){u,w});
}
void init()
{
ti=0;
for(int i=0; i<=n; i++)
G[i].clear();
memset(L,0,sizeof(L));
memset(R,0,sizeof(R));
}
void dfs(int u,int per)
{
L[u]=++ti;
for(int i=0; i<(int)G[u].size(); i++)
{
int v=G[u][i].to;
if(v==per)
continue;
dfs(v,u);
}
R[u]=ti;
}