2435: [Noi2011]道路修建

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 3505  Solved: 1167
[Submit][Status][Discuss]

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

n = 1,000,000 1≤ai, bi≤n

0 ≤ci≤ 10^6

Source

Day2

[Submit][Status][Discuss]

【题解】【dfs】

【裸dfs,有点类似于树链剖分的准备过程,然而这必然不是正解,我几乎卡时。。。】

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{int s,t,w;
}d[1000010];
int a[2000010],nxt[2000010],p[1000010],val[2000010],tot;
int f[1000010],size[1000010],dep[1000010];
int n;
long long ans;
inline long long abss(int x)
{if(x>=0) return (long long)x;x*=-1;return (long long)x;
}
inline void add(int x,int y,int v)
{tot++; a[tot]=y; nxt[tot]=p[x]; p[x]=tot; val[tot]=v;tot++; a[tot]=x; nxt[tot]=p[y]; p[y]=tot; val[tot]=v;
}
void dfs(int x,int fa,int h)
{f[x]=fa; size[x]=1; dep[x]=h;for(int i=p[x];i!=-1;i=nxt[i])if(a[i]!=fa){dfs(a[i],x,h+1);size[x]+=size[a[i]];}return;
}
int main()
{int i,j;memset(p,-1,sizeof(p));memset(nxt,-1,sizeof(nxt));scanf("%d",&n);for(i=1;i<n;++i){int x,y,z;scanf("%d%d%d",&x,&y,&z);add(x,y,z); d[i].s=x; d[i].t=y; d[i].w=z;}dfs(1,0,1);for(i=1;i<n;++i){int x=d[i].s,y=d[i].t;int s1,s2;if(dep[x]>dep[y]) swap(x,y);s1=size[1]-size[x]+size[x]-size[y]-1;s2=size[y]-1; ans+=(long long)abss(s1-s2)*(long long)d[i].w;}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/lris-searching/p/9402996.html

【bzoj 2435】[Noi2011]道路修建(dfs)相关推荐

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

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

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

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

  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. BZOJ2435 [Noi2011]道路修建

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

  6. NOI2011 道路修建

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

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

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

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

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

  9. P4878 道路修建-美国

    http://www.tyvj.cn/p/4878道路修建 我想我经大神点拨后终于明白了...回学校再写吧 时间限制:1s 内存限制:256MB [问题描述] A国是一个商业高度发达的国家.它包含了n ...

最新文章

  1. Chapter4 Java流程控制之选择结构
  2. SQLServer2008 查询分析器内容未保存,查找分析器内容
  3. python 删除set指定值_python中的变量和数据类型(三)
  4. cad2010多个文件并排显示_cad2010如何设置 使一个窗口打开多个文件,并排显示(和360浏览器类似的并排缩略)...
  5. 远卓:数字化转型的精益化思考
  6. 多屏互动之Duet Display和Air Display
  7. 西门子PLC编程软件step7 v5.5 和仿真软件S7-Plcsim安装与授权
  8. 椭圆曲线的加密算法解析和程序设计—基于python语言
  9. 第一章 马克思主义哲学是科学的世界观和方法论
  10. WordPress网站配置腾讯云cdn缓存
  11. 苹果系统中国日历服务器,ios日历中国节日不见了(2021年苹果日历订阅地址)...
  12. Python中 os.sep 的作用
  13. 【设备管理系统】-部署到正式环境
  14. GitGitHub 笔记
  15. 雪花算法:分布式唯一 ID 生成利器
  16. python学习面向对象_Python小白必学的面向对象
  17. python递归解压文件_Python之路10-递归调用解压zip包或rar包
  18. 【视频制作】PR如何制作追踪马赛克
  19. 如何提取视频中的音频?自用方法介绍
  20. UED交互设计DMEO

热门文章

  1. 面向站长和网站管理员的Web缓存加速指南
  2. GoogleClosureLibrary 中的Component 模型纪要
  3. Oracle RAC 启动与关闭 (rac 命令示例)
  4. 创建android工程时Install Dependencies(安装依赖)提示
  5. Android sharedPreference设置缓存时间
  6. android 如何使用LaunchMode
  7. Java并发编程—如何取消定时任务
  8. 注册中心—组件—Consul
  9. 注册中心—组件—Eureka
  10. 潘正磊谈微软研发团队管理和敏捷实践学习总结