1 条题解
-
0
意料之外的暴力能过
/***************************************** Note : ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> #define int long long #define IL inline const int N = 1e6+10; const int INF = 0x3f3f3f3f; using namespace std; IL int read() { char ch = getchar(); int f = 1, num = 0; while(ch>'9'||ch<'0') { if(ch=='-') f = -1; ch=getchar(); } while(ch>='0'&&ch<='9') num = num*10+ch-'0', ch = getchar(); return num*f; } int n,m,num[N],fa[N]; int head[N],ne[N],to[N],id; void add(int x,int y) { to[++id]=y,ne[id]=head[x],head[x]=id; to[++id]=x,ne[id]=head[y],head[y]=id; } void init(int u) { for(int i = head[u];i;i=ne[i]) { int v=to[i]; if(v==fa[u]) continue; fa[v]=u; init(v); } } void dfs(int u,int d,int x) { num[u]+=x; if(d) for(int i = head[u];i;i=ne[i]) { int v=to[i]; if(v==fa[u]) continue; dfs(v,d-1,x); } } signed main() { n=read(); for(int i = 1,x,y;i<n;i++) { x=read(),y=read(); add(x,y); } init(1); m=read(); while(m--) { int u=read(),d=read(),x=read(); dfs(u,d,x); } for(int i = 1;i<=n;i++) printf("%lld ",num[i]); }
- 1
信息
- ID
- 2318
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 14
- 已通过
- 6
- 上传者