博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2763 Housewife Wind(树链剖分+树状数组)
阅读量:5011 次
发布时间:2019-06-12

本文共 1663 字,大约阅读时间需要 5 分钟。

 

【题目链接】 

 

【题目大意】

  在一棵树上,给出一些边的边长,有修改边的边长的操作,

  询问每次从当前点到目标点的最短距离

 

【题解】

  树链剖分之后,相当于树状数组的单点更新和区间查询,

  注意边权转点权之后链操作不覆盖deep最浅的点,这里容易出错

 

【代码】

#include 
#include
#include
using namespace std;const int N=200010; int tot,x,d[N],num[N],ed=0,u,w,n,m,i,v[N],vis[N],f[N],g[N];int nxt[N],size[N],son[N],st[N],en[N],dfn,top[N],t;char ch;void add_edge(int x,int y){v[++ed]=y;nxt[ed]=g[x];g[x]=ed;}void init(){ memset(g,dfn=ed=0,sizeof(g)); memset(v,0,sizeof(v)); memset(nxt,0,sizeof(nxt)); memset(son,-1,sizeof(son));}void dfs(int x){ size[x]=1; for(int i=g[x];i;i=nxt[i])if(v[i]!=f[x]){ f[v[i]]=x,d[v[i]]=d[x]+1; dfs(v[i]),size[x]+=size[v[i]]; if(size[v[i]]>size[son[x]])son[x]=v[i]; }}void dfs2(int x,int y){ if(x==-1)return; st[x]=++dfn;top[x]=y; if(son[x])dfs2(son[x],y); for(int i=g[x];i;i=nxt[i])if(v[i]!=son[x]&&v[i]!=f[x])dfs2(v[i],v[i]); en[x]=dfn;}int c[N];void add(int x,int val){while(x<=dfn)c[x]+=val,x+=x&-x;}int query(int x){int s=0;while(x)s+=c[x],x-=x&-x;return s;}int chain(int x,int y){ int res=0; for(;top[x]!=top[y];x=f[top[x]]){ if(d[top[x]]
d[e[i][1]])swap(e[i][0],e[i][1]); add(st[e[i][1]],e[i][2]); }int op,x,y; while(q--){ scanf("%d",&op); if(op==0){ scanf("%d",&x); printf("%d\n",chain(x,s)); s=x; }else{ scanf("%d%d",&x,&y); add(st[e[x][1]],y-e[x][2]); e[x][2]=y; } } }return 0;}

转载于:https://www.cnblogs.com/forever97/p/poj2763.html

你可能感兴趣的文章
如何搭建github+hexo博客-转
查看>>
HW2.2
查看>>
将Windows Server 2016 打造成工作站(20161030更新)
查看>>
5大主浏览器css3和html5兼容性大比拼
查看>>
常用正则表达示
查看>>
解决Oracle在命令行下无法使用del等键问题
查看>>
获取web项目的绝对路径的方法总结
查看>>
nodejs批量处理图片
查看>>
c# 复制整个文件夹的内容,Copy所有文件
查看>>
30秒js练习(数组篇) 更新中。。。
查看>>
hdu-5894 hannnnah_j’s Biological Test(组合数学)
查看>>
hdu-4810 Wall Painting(组合数学)
查看>>
企业互联网服务介绍
查看>>
【推荐】iOS中书写代码规范34条小建议
查看>>
AJAX请求头Content-type
查看>>
3.html基础标签:表格
查看>>
python操作Redisl数据库
查看>>
NSArray & NSDictionary
查看>>
解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file...
查看>>
js yield
查看>>