2435: [Noi2011]道路修建

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://www.lydsy.com/JudgeOnline/problem.php?id=2435

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

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

Sample Input

6
1 2 1
1 3 1
1 4 2
6 3 1
5 2 1

Sample Output

20

HINT

题意

题解:

树形dp,直接dfs就好了,姿势不优美的dp会被卡爆栈……

本是傻逼题,相煎何太急

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define test freopen("test.txt","r",stdin)
#define maxn 1500005
#define mod 10007
#define eps 1e-9
int Num;
char CH[20];
const int inf=0x3f3f3f3f;
const ll infll = 0x3f3f3f3f3f3f3f3fLL;
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline void P(int x)
{Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts("");
}
//**************************************************************************************
struct node
{int x,y;
};
ll ans;
vector<node> e[maxn];
int vis[maxn];
int size[maxn];
int n;
int a,b,c;
void dfs(int u)
{  size[u]=1; node kiss; for(int i=0;i<e[u].size();i++)  if(!vis[(kiss=e[u][i]).x]){  vis[kiss.x]=1;  dfs(kiss.x);  size[u]+=size[kiss.x];  ans+=(ll)abs(n-size[kiss.x]-size[kiss.x])*kiss.y;  }
}
int main()
{//test;n=read();for(int i=1;i<n;i++){a=read(),b=read(),c=read();e[a].push_back((node){b,c});e[b].push_back((node){a,c});}vis[n]=1;dfs(n);cout<<ans<<endl;}

bzoj 2435: [Noi2011]道路修建 树上 dp相关推荐

  1. bzoj 2435: [Noi2011]道路修建(DFS)

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4110  Solved: 1429 [Submit][Sta ...

  2. bzoj2435: [Noi2011]道路修建 树上dp

    点击打开链接 RE了一辈子... 思路:树上dp,直接dfs找到每个点v的子节点有多少, 那么对答案的贡献是 w*abs((n-size[v])-size[v]); RE代码: 1 #include ...

  3. bzoj 2435: [Noi2011]道路修建【树形dp】

    dp求size和deep,然后对每条边模拟求代价即可 #include<iostream> #include<cstdio> #include<algorithm> ...

  4. 2435: [Noi2011]道路修建

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

  5. 【bzoj 2435】[Noi2011]道路修建(dfs)

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3505  Solved: 1167 [Submit][Sta ...

  6. BZOJ2435 [Noi2011]道路修建

    这是NOI11年题,你在逗我? 直接dfs就可以了,Linux下貌似不会爆栈... 1 /******************************************************* ...

  7. NOI2011 道路修建

    题目连接:http://221.192.240.123:8586/JudgeOnline/showproblem?problem_id=1670 题意自便. 相关知识:树的遍历,非递归DFS写法. 分 ...

  8. 【BZOJ-2435】道路修建 (树形DP?)DFS

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3115  Solved: 1002 [Submit][Sta ...

  9. 算法提高——树上DP(树的直径)

    文章目录 前言 一.什么是树的直径? 二.例题 三.树上DP 总结 前言 树的直径是图论里边非常高的考察点并且是入门树形dp的基础,竞赛的同学务必重视. 一.什么是树的直径? 树上最远两点(叶子结点) ...

最新文章

  1. 人工智能如何彻底改变全球物流和供应链管理
  2. Android个人信息管理系统 源代码,个人信息管理系统源代码(自己写的).doc
  3. 2.4g 无线键鼠对码软件_无线路由器的2.4G和5G同时开速度有影响吗?
  4. 干货!华为AutoML助力AI开发效率提升攻略
  5. c++中enum 如何使用
  6. 盲盒拓客小程序商家联盟红包分销裂变抽奖小程序源码
  7. linux find命令mtime/atime/ctime +n -n n 全网最正确的总结
  8. 如何选择WEB报表工具(二)
  9. 分布式文件系统FastDFS安装教程
  10. 【推荐】在R中无缝集成Github云端代码托管
  11. Matlab2020b的注释在低版本上乱码
  12. 01.Unity设置成为中文
  13. 谷歌免费域名邮箱申请全解
  14. 202109青少年软件编程(Python)等级考试(五级编程题)
  15. 计网 | 链路层协议及大题解构
  16. sonarqube中 项目名称 问题
  17. 成都涌现大量网游业创业团队:从业人员近3万(网游亦可创业)
  18. 荣耀手机不出鸿蒙系统,惊喜!4部荣耀手机可升级至华为鸿蒙系统,网友表示:终于等到了...
  19. php录音功能,微信开发之录音功能
  20. 服务器网站搭建入门教程

热门文章

  1. 痴迷物理,无法自拔——3.24
  2. Java基础之扩展GUI——添加状态栏(Sketcher 1 with a status bar)
  3. nyist 637 我和你
  4. Windows Phone 7 浏览器打开新窗口问题
  5. 阿里副总裁肖利华:数智化转型的7个关键词
  6. 俞军:产品经理必备的2个模型
  7. 产品治理体系:产品顶层框架
  8. 微信红利末期,新媒体运营除了打造10W+还应该做什么?
  9. 一个应届产品狗的产品日记【第二部:学做产品】
  10. 花了几百万,创业一年学到了什么