1 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define int long long const int N=2e5+10; vector<int>e[N]; int a[N],b[N],tp; int fa[N],f[N],c[N]; void dfs(int x,int xfa) { fa[x]=xfa; for(int y:e[x]) if(y!=xfa)dfs(y,x); } void dfs2(int x,int xfa) { tp+=f[x];c[x]=tp; for(int y:e[x]) if(y!=xfa)dfs2(y,x); tp-=f[x]; } signed main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n;cin>>n; for(int i=1;i<n;i++) { cin>>a[i]>>b[i]; e[a[i]].push_back(b[i]); e[b[i]].push_back(a[i]); } dfs(1,0); int q;cin>>q; while(q--) { int t,w,k;cin>>t>>w>>k; int u=a[w],v=b[w]; if(t==2)swap(u,v); if(fa[v]==u)tp+=k,f[v]-=k; else f[u]+=k; } dfs2(1,0); for(int i=1;i<=n;i++)cout<<c[i]<<'\n'; return 0; }
- 1
信息
- ID
- 12019
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 8
- 标签
- 递交数
- 13
- 已通过
- 6
- 上传者