正解:深度优先搜索+树状数组/线段树
歪解:递归+一个类似于线段树的思想
#include<cstdio>
using namespace std;
int n,m,wt,w[100001],fa[100001],li[100001]; int u,v;//li记录i节点要"加"的值(但并不加,在递归时才带着走)int update(int x,int y)//y是题目中的奇偶
{ return !x?0:update(fa[x],-y)+li[x]*y; }int main()
{scanf("%d%d",&n,&m); for (int i=1;i<=n;i++)scanf("%d",&w[i]); for (int i=1;i<=n-1;i++)scanf("%d%d",&u,&v),fa[v]=u; for (int i=1;i<=m;i++){scanf("%d",&wt); int q,e; if (wt==2) scanf("%d",&q),printf("%dn",w[q]+update(q,1));else scanf("%d%d",&q,&e),li[q]+=e;}
}
本文发布于:2024-01-29 18:18:41,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652352517365.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |