A 求和

时间限制: 1 Sec  空间限制: 256 MB

输入输出文件名:A.in,A.out

题目描述

给出一棵以1为根的有n个节点的树,树上每条边都有其边权。

求所有点对之间的路径上的边权和的总和。

输入格式:

第一行为n

接下来n-1行,每行三个整数,分别表示一条边的两端点编号和边权。(编号为1..n)

输出格式:

输出一个数字表示总和

输入样例

4

1 2 10

2 3 10

1 4 20

输出样例

130

样例解释

1->2:10 , 1->3:20 , 1->4:20 , 2->3:10 , 2->4:30 , 3->4:40 , 总和为130。

数据范围

对于30%的数据,1<=n<=300

对于80%的数据,1<=n<=3000

对于100%的数据,1<=n<=100000,边权为<=100的正整数。

#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int N=100010;
struct node
{int next,to,p;
}e[N*2];
int first[N],book[N],size[N];
int cnt=0;
ll sum=0;
int n;void insert(int v,int u,int p)
{e[++cnt].to=v;e[cnt].next=first[u];first[u]=cnt;e[cnt].p=p;e[++cnt].to=u;e[cnt].next=first[v];first[v]=cnt;e[cnt].p=p;
}void dfs1(int x)
{book[x]=1;size[x]=1;for(int i=first[x];i;i=e[i].next){if(book[e[i].to]==0){dfs1(e[i].to);size[x]+=size[e[i].to];}}
}void dfs(int x)
{book[x]=1;for(int i=first[x];i;i=e[i].next){if(book[e[i].to]==0){sum+=(ll)e[i].p*size[e[i].to]*(n-size[e[i].to]);dfs(e[i].to);}}
}int main()
{freopen("A.in","r",stdin);freopen("A.out","w",stdout);scanf("%d",&n);int v,u,p;for(int i=1;i<=n-1;i++){scanf("%d %d %d",&u,&v,&p);insert(u,v,p);}memset(book,0,sizeof(book));dfs1(1);memset(book,0,sizeof(book));dfs(1);printf("%lld\n",sum);
}

View Code

谢谢师兄(czl)教导。

转载于:https://www.cnblogs.com/12fs/p/7349613.html

搜索场 day1 A 求和相关推荐

  1. 【万字干获】阿里妈妈搜索推荐广告预估模型2021思考与实践

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...

  2. 小程序碰上浏览器搜索入口!

    据网友爆料,在12月28日,(也就是微信6.6.1版本发布当天)最新发布的安卓8.1版本QQ浏览器的搜索栏中,出现了一个专供微信小程序的垂直搜索,即小程序在移动端QQ浏览器场景获得了一个搜索形态的入口 ...

  3. 在Excel中怎样快速对数据进行求和?分享4种求和方法

    在Excel表格当中,其实有很多求和方式,然而今天我们不聊那些五花八门用不上的,说说实际,就聊我们大家在职场当中可能会遇到的{求和方式},希望大家能够喜欢 1. SUM自动相加求和 这也是最基础了求和 ...

  4. SharePoint 2013 企业搜索架构示例

     博客地址:http://blog.csdn.net/FoxDave 本文参考自微软官方的Chart,我们来看一下企业中对于不同规模SharePoint搜索的场的架构是什么样的. 对于搜索场的规模 ...

  5. DingTalk「开发者说」第6期 边聊边做场景群

    视频地址:一键回看 目录 一.什么是"场景群" 二.群聊开放的核心能力介绍 三.从产品架构解读群聊会话开放 四.解决方案案例解读 五.场景群实践 六.Q&A 正文: 一.什 ...

  6. 《Linux命令行与shell脚本编程大全》(第三版)读书笔记

    第一部分 Linux命令行 第三章.基本的bash shell命令 bash手册 man 命令 例子: man cat 空格翻页.回车下一行.左右键看右侧(左侧)内容.q退出 info info in ...

  7. linux命令行和shell脚本编程大全笔记

    第1章        初识Linux shell 内存存储单元按组划分成很多块,这些块称作页面(page) Linux操作系统将运行中的程序称为进程.进程可以在前台运行,将输出显示在屏幕上,也 可以在 ...

  8. 深度学企业linux awk命令详解与应用(下篇)

    开篇语: 我们在<一篇速学企业linux awk命令详解与应用(上篇)>中介绍了 awk 的基本用法,其实在awk 脚本程序中,还支持使用一些编程语言,比如变量.数组.分支结构(if-th ...

  9. shell脚本编程笔记(十二)—— gawk程序

    一. 简介 虽然sed是非常方便自动修改文本文件的工具,但其也有自身的限制.通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环境来修改和重新组织文件中的数据,这正是gawk能够做到的 ...

  10. linux的gawk命令

    目录 1.awk 简介 2.awk 概述 3. 工作原理 4.gawk程序的可用选项 5.基础使用示例 5.1 使用数据字段变量: 5.2 指定分隔符 5.3 在程序脚本中使用多个命令 5.4 从文件 ...

最新文章

  1. U盘如何量产成USB-CDROM
  2. java获取数据库的列名,类型等信息
  3. vs2008中如何在项目属性中切换“图形形式”和“控制台形式”——即调出或消除黑窗口
  4. matlab 数据保存为txt excel mat
  5. OpenCV仿射变换Affine Transformations
  6. js 让浏览器全屏模式的方法launchFullscreen
  7. 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用
  8. Python中print函数的使用
  9. FlashFXP设置文件传输速度
  10. 图神经网络入门:GCN论文+源码超级详细注释讲解!
  11. 大学计算机基础相关书籍,大学计算机基础
  12. c# FlexCell自动换行
  13. WIN10计算机不支持3D游戏怎么办,教您如何在win10系统中启用3D加速?
  14. vue error The code generator has deoptimised the styling exceeds the max of 100KB
  15. 阿里云部署nginx
  16. 共阳极数码管与共阴极数码管联合使用来循环显示数字00-99。
  17. 多个pdf如何快速合并成一个?
  18. 零基础学java(6)——面向对象的基本特征
  19. B站哔哩哔哩:11 月 22 日上午九时正起恢复在香港联交所买卖
  20. 金蝶实习(十一)——简单的二次开发

热门文章

  1. 云计算将逐渐成为支撑SaaS应用的基础
  2. 4.寻找两个正序数组的中位数
  3. HTML - 元素/标签和属性基础
  4. 在optenstack配置nova
  5. Linux重启nfs出现没有权限,Linux NFS搭建与错误提示解决
  6. 初始化请求例子_当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?
  7. 蓝桥杯2017年第八届C/C++省赛B组第一题-购物单
  8. Android viewpager + fragment实现fragment之间的切换
  9. 7-8 统计工龄 (20 分)
  10. Android:JNI与NDK(二)交叉编译与动态库,静态库