【结论】【树上差分】

来源:互联网 发布:上海华测导航待遇知乎 编辑:程序博客网 时间:2024/05/21 10:27

1、找出被所有路径都覆盖的边

在树中将所有路径起、始权值加1,起、始点的lca权值减2,从所有叶节点开始把权值往上累加。

最终权值为路径数的点到其父亲的边为所求边。

void dfs1(int s){    for(int t=fi1[s],y;t;t=la1[t])    {        y=en1[t];        dfs1(y);        j[s]+=j[y];     }}

2、 将每条路径(s,t)上的每个点权值增加1,求各点权值

在树中将所有路径起、始权值加1,起、始点的lca权值减1,lca的父亲权值减1,从所有叶节点开始把权值往上累加。

0 0
原创粉丝点击