
树链剖分&树分治
algzjh
这个作者很懒,什么都没留下…
展开
-
树分治
int tot,rt,mx,cnt,n,up; int first[N],vis[N],sz[N],w[N];void init(int n) { tot=0;ans=0; for(int i=0;i<=n;i++) { vis[i]=0; first[i]=-1; } }void dfs1(int u,int fa) { in转载 2017-08-23 17:32:03 · 454 阅读 · 0 评论 -
树链剖分
void dfs1(int u,int fa,int depth) { dep[u]=depth; f[u]=fa;sz[u]=1;son[u]=-1; for(int i=first[u];i!=-1;i=edge[i].next) { int v=edge[i].e; if(v==fa) continue; dfs1转载 2017-08-23 17:24:58 · 401 阅读 · 0 评论 -
树形dp——求树的重心
先dfs一次求出每个结点的子树大小,再dfs一遍维护答案,以i为根的子树的最多结点个数为max{max(dp[j]),n−dp[i]}max{max(dp[j]),n−dp[i]}max\{max(dp[j]),n-dp[i]\}原创 2018-05-25 19:38:28 · 732 阅读 · 1 评论