php网站开发设计模式,cms网站建站流程,做个企业网网站怎么做,html网页制作视频正题 大意
给出一个树#xff0c;每个节点都有值。如果一个节点加上val#xff0c;那么他的子节点就得加上-val以此类推。有两种操作#xff1a; #xff08;1#xff09;询问一个节点的值 #xff08;2#xff09;一个节点的值加上一个数 解题思路
改变就计算到一个…正题 大意
给出一个树每个节点都有值。如果一个节点加上val那么他的子节点就得加上-val以此类推。有两种操作 1询问一个节点的值 2一个节点的值加上一个数 解题思路
改变就计算到一个其他数组里然后每次询问就回到根节点一路把标记顺下来。 代码
#includecstdio
#includecctype
using namespace std;
int n,m,xx,yy,w[100001],lazy[100001],ques,ls[100001],father[100001],ans;
char c;
int in()
{ans0;cgetchar();if (!isdigit(c)) cgetchar();//ansc-48;while (isdigit(c)){ansans*10c-48;cgetchar();}return ans;
}
int updata(int k,int mov)
{if (!k) return 0;return updata(father[k],-mov)lazy[k]*mov;//回退计算
}
int main()
{freopen(tree.in,r,stdin);freopen(tree.out,w,stdout);nin();min();for (int i1;in;i){w[i]in();}for (int i1;in;i){xxin();yyin();father[yy]xx;}for (int i1;im;i){scanf(%d,ques);if (ques2){xxin();printf(%d\n,w[xx]updata(xx,1));}else{xxin();yyin();lazy[xx]yy;}}
}