1 条题解

  • 0
    @ 2022-8-12 20:59:30

    意料之外的暴力能过

    /*****************************************
    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
    上传者