40分求救 蒟蒻心态崩了
查看原帖
40分求救 蒟蒻心态崩了
427060
甲虫独白楼主2021/8/18 14:39
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define N 10000010
using namespace std;

int n,head[N],w[N],nt[N],v[N];
int pre[N];
int cnt;

inline void add(int a,int b,int c)
{
    v[++cnt]=b;
    nt[cnt]=head[a];
    head[a]=cnt;
    w[cnt]=c;
}

long long ans;
int size[N];

void dfs(int k)
{
    size[k]=1;
    for(int i=head[k];i;i=nt[i])
    {
        if(v[i]!=pre[k])
        {
        pre[v[i]]=k;
        dfs(v[i]);
        size[k]+=size[v[i]];
        ans+=(long long)(abs(n-2*size[v[i]])*w[i]);
        
        }
        
    }
    
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
        int from,to,weight;
        scanf("%d%d%d",&from,&to,&weight);
        add(from,to,weight);
        add(to,from,weight);
    }
    dfs(1);
    
   printf("%lld",ans);
    return 0;
}
2021/8/18 14:39
加载中...