首页 > 其他 > 详细

P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)

时间:2019-10-29 09:36:42      阅读:140      评论:0      收藏:0      [点我收藏+]

P2052 [NOI2011]道路修建

 

这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)……

一条边的贡献就是儿子的大小和n-siz[v]乘上边权;

技术分享图片
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e6+10;
typedef long long ll;
int pre[maxn*2],last[maxn],other[maxn*2],len[maxn*2],l;
void add(int x,int y,int z)
{
    l++;
    pre[l]=last[x];
    last[x]=l;
    other[l]=y;
    len[l]=z;
}

int n;
int father[maxn];
int siz[maxn];
ll ans;

void dfs(int x,int fa)
{
    siz[x]=1;
    for(int p=last[x];p;p=pre[p])
    {
        int v=other[p];
        if(v==fa) continue;
        dfs(v,x);
        ans+=(ll)abs(n-2*siz[v])*len[p];
        siz[x]+=siz[v];
    }
}



int main()
{
    scanf("%d",&n);
    for(int i=1;i<n;i++)
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        add(a,b,c);
        add(b,a,c);
    }
    dfs(1,1);
    printf("%lld",ans); 
    return 0;
}
View Code

 

P2052 [NOI2011]道路修建——树形结构(水题,大佬勿进)

原文:https://www.cnblogs.com/WHFF521/p/11756618.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!