Description

在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家

之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿

意修建恰好 n – 1条双向道路。 每条道路的修建都要付出一定的费用, 这个费用等于道路长度乘以道路两端的国家个数之差的绝对值。例如,在下图中,虚线所示道路两端分别有 2 个、4个国家,如果该道路长度为 1,则费用为1×|2 – 4|=2。图中圆圈里的数字表示国家的编号。



由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建

费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计

算出所需要的费用。请你帮助国王们设计一个这样的软件。

Input

输入的第一行包含一个整数n,表示 W 星球上的国家的数量,国家从 1到n

编号。接下来 n – 1行描述道路建设情况,其中第 i 行包含三个整数ai、bi和ci,表

示第i 条双向道路修建在 ai与bi两个国家之间,长度为ci。

Output

输出一个整数,表示修建所有道路所需要的总费用。

水题.......(老年退役选手只能做水题压压惊。)

假设当前边的两部分的点的数量分别为\(x,y\),则当我们遍历的时候

\(y=size[v],x=n-size[v]\) (\(v\)为当前遍历到的儿子节点)

那么我们得到的就是\(|n-2\times size[v]| \times w[i]\)(\(w[i]\)为当前边的边权)

注意边权要开 \(long \ long\)

代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#define R register
#define lo long long using namespace std; const int gz=1e6+8; inline void in(R int &x)
{
R int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
} int head[gz],tot,size[gz],n; lo ans; struct cod{int u,v;lo w;}edge[gz<<1]; inline void add(R int x,R int y,R lo z)
{
edge[++tot].u=head[x];
edge[tot].v=y;
edge[tot].w=z;
head[x]=tot;
} void dfs(R int u,R int fa)
{
size[u]=1;
for(R int i=head[u];i;i=edge[i].u)
{
if(edge[i].v==fa)continue;
dfs(edge[i].v,u);
size[u]+=size[edge[i].v];
ans+=(lo)(abs(n-2*size[edge[i].v])*edge[i].w);
}
} int main()
{
in(n);
for(R int i=1,x,y;i<n;i++)
{
lo z;
in(x),in(y),scanf("%lld",&z);
add(x,y,z),add(y,x,z);
}
dfs(1,0);
printf("%lld\n",ans);
}

Dfs【P2052】 [NOI2011]道路修建的更多相关文章

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

    P2052 [NOI2011]道路修建 这个题其实在dfs里面就可以把事干完的,(我一开始还拿出来求了一把)…… 一条边的贡献就是儿子的大小和n-siz[v]乘上边权: #include<cma ...

  2. 洛谷P2052 [NOI2011]道路修建(树形DP)

    题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...

  3. P2052 [NOI2011]道路修建

    题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...

  4. Luogu P2052 [NOI2011]道路修建

    吐槽一下 我开了\(-O2\)优化结果跑的更慢了什么鬼???!!! 我怕不是吸了一口毒氧气 不要脸的放上我的博客,欢迎大家前来面基 题目大意 给定一棵有\(n\)个节点的树,树中有\({n-1}\)条 ...

  5. BZOJ 2435: [Noi2011]道路修建( dfs )

    NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...

  6. BZOJ 2435: [Noi2011]道路修建 dfs搜图

    2435: [Noi2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他 ...

  7. bzoj 2435: [Noi2011]道路修建 树上 dp

    2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  8. NOI2011道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1974  Solved: 550[Submit][Status ...

  9. 2435: [Noi2011]道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2188  Solved: 639[Submit][Status ...

  10. BZOJ_2435_[Noi2011]道路修建_dfs

    BZOJ_2435_[Noi2011]道路修建_dfs 题意: http://www.lydsy.com/JudgeOnline/problem.php?id=2435 分析: dfs搞定. 我怕爆栈 ...

随机推荐

  1. 关于NuGet

    一.NuGet是什么? NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站 ...

  2. 2016CCPC东北地区大学生程序设计竞赛 (2018年8月22日组队训练赛)

    题目链接:http://acm.hdu.edu.cn/search.php?field=problem&key=2016CCPC%B6%AB%B1%B1%B5%D8%C7%F8%B4%F3%D ...

  3. Win7下SQLPlus登录时报错"SP2-1503:无法初始化Oracle调用界面"

    Oracle安装完毕,使用SQLPlus登录的时候报错"SP2-1503:无法初始化Oracle调用界面",然后一闪界面关闭,报错界面如下: 这个是因为在Win7需要管理员权限,右 ...

  4. python基础之常用内置函数

    前言 python有许多内置的函数,它们定义在python的builtins模块,在python的代码中可以直接使用它们. 常用的内置函数 类型转换 int python的整数类型都是int类型的实例 ...

  5. Delphi 10 seattle 去掉自带的代码连接线

  6. Redis 启动警告解决【转】

    [root@centos224]# service redisd start :M Nov :: (it was originally set to ). _._ _.-``__ ''-._ _.-` ...

  7. URAL题解一

    URAL题解一 URAL 1002 题目描述:一种记住手机号的方法就是将字母与数字对应,如图.这样就可以只记住一些单词,而不用记住数字.给出一个数字串和n个单词,用最少的单词数来代替数字串,输出对应的 ...

  8. count(*)与count(1)、count('xxx')等在使用语法方面的区别

    语法方面: 区别就是:没有区别!!! “*”号是通配符: “*”号是通配符 “*”号是通配符 使用"*"号和使用其他数字和任意非字段字符在使用方面没有任何语法错误; 至于效率方面是 ...

  9. Python 库汇总中文版

    这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文本处理.自然语言处理.机器学习. ...

  10. PHP laravel 5.0 Blade 模板引擎 Api使用备注

    PHP laravel 5.0 Blade 模板引擎 Api使用备注 /** * PHP laravel 5.0 Blade 模板引擎 Api使用备注 **/ //子模版中开头,调用@extends( ...