题目:https://hihocoder.com/problemset/problem/1238?sid=1369284

一道很不错的题目。

思路:对于任意一条边(a,b),权值为w,以a为根的子树节点数目为node[a],以b为根的子树节点node[b],则该边被计算node[a]*node[b]*w次。利用DFS对所有节点进行遍历。

#include <iostream>
#include <vector>
#include <utility>
using namespace std;
typedef long long llong;
typedef pair<int,llong> Pair;
const int N=1e6+4;
vector<vector<Pair>> g(N);
llong total=0LL;
int root=1;
vector<int> level(N,0);
vector<int> node(N,0);
vector<llong> path(N,0);
int n,m;
void dfs(int rt){node[rt]=1;for(auto e:g[rt]){if(level[e.first]==0){path[e.first]=e.second;level[e.first]=level[rt]+1;dfs(e.first);node[rt]+=node[e.first];total+=(llong)node[e.first]*(n-node[e.first])*e.second;}}
}
void edit(int u,int v,llong w){if(level[u]<level[v]){swap(u,v);}llong delta=w-path[u];total+=delta*node[u]*(n-node[u]);path[u]=w;
}
int main() {scanf("%d%d",&n,&m);int u,v;llong k;for(int i=0;i<n;++i){scanf("%d%d%lld",&u,&v,&k);g[u].push_back(Pair(v,k));g[v].push_back(Pair(u,k));}char op[10];level[root]=1;dfs(1);while(m--){scanf("%s",op);if(op[0]=='Q'){printf("%lld\n",total);}else{scanf("%d%d%lld",&u,&v,&k);edit(u,v,k);}}return 0;
}

[hihocoder]1238 : Total Highway Distance相关推荐

  1. Leetcode 477. Total Hamming Distance 总海明距离 解题报告

    1 解题思想 题目的意思就是给了一个数组,现在求总的海明距离,其中: 1.海明距离:任意两个数在二级制的表示下(int = 32bit),每个bit对应的值是1或0,那么这两个数在这32个位置下,取值 ...

  2. leetcode 477. Total Hamming Distance | 477. 汉明距离总和

    题目 https://leetcode.com/problems/total-hamming-distance/ 题解 class Solution {public int totalHammingD ...

  3. 微软2016 9月笔试

    全场梦游..考研狗好久没码题了已经跪了T T 被自己蠢哭 题目1 : Farthest Point 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 Given a circ ...

  4. 科普:浅谈 Hellinger Distance

    浅谈 Hellinger Distance 2016.05.24 最近在看 Hellinger Distance(海林格距离), 平时看多了欧式距离,马氏距离等等,貌似介绍这个的材料不是很多,例如:维 ...

  5. LeetCode Shortest Distance from All Buildings

    原题链接在这里:https://leetcode.com/problems/shortest-distance-from-all-buildings/ 题目: You want to build a ...

  6. LINQ篇:ASP.NET using LINQ(Part One) Scott大师的产物

    [原文地址]Using LINQ with ASP.NET (Part 1) [原文发表日期]Sunday, May 14, 2006 9:49 PM 最近使我激动不已的新鲜事之一就是LINQ系列技术 ...

  7. 继续过中等难度.0309

      .   8  String to Integer (atoi)    13.9% Medium   . 151 Reverse Words in a String      15.7% Mediu ...

  8. Attention!注意力机制可解释吗?

    来源:哈工大SCIR 本文约9300字,建议阅读10+分钟. 本文将与您探讨注意力机制的可解释性问题. 序言 自2014年Bahdanau将Attention作为软对齐引入神经机器翻译以来,大量的自然 ...

  9. 聚类算法KMeans和KMedoid 的Matlab实现

    KMeans和KMedoid算法是聚类算法中比较普遍的方法,本文讲了其原理和matlab中实现的代码. 1.目标: 找出一个分割,使得距离平方和最小 2.K-Means算法: 1. 将数据分为k个非空 ...

最新文章

  1. java中jquery怎么学,jQuery动画+实例
  2. apache 增加新网站
  3. python读取word文件并替换部分文字_python实现替换word中的关键文字(使用通配符)...
  4. 关于c#中 的动态加载程序集
  5. 优秀REST风格 API的设计原则
  6. python 纵向输出字符串_Python(五)字符串
  7. windows下文件路径太深,无法删除解决办法
  8. rufus安装win10
  9. 图像特征点匹配,SIFT及SURF算法的原理及尽量抛开数学问题的浅析(含示例程序,基于VS2013,OpenCV_2.49)
  10. Collecting package metadata (current_repodata.json): fail亲测成功
  11. 台灯c语言,Jya无线台灯C上手体验:从新界说光的含义
  12. SQL server 字符串 转 日期格式
  13. 论文笔记(三):DAML: Dual Attention Mutual Learning between Ratings and Reviews for Item Recommendation
  14. 惠安高考状元2021成绩查询,2021年惠州高考成绩排名查询,成绩什么时候可以查询...
  15. 【华为OD机试】1038 - 学英语
  16. 游综宅2021最新天下布魔下载渠道 Tenkafu MA下载官网地址
  17. 智课雅思词汇---四、clos和cap和ced是什么意思
  18. vue 路由的内置组件 router-view 详细介绍(有图有真相)
  19. java/php/net/python宅急送管理系统设计
  20. HTML tag(标签)用法

热门文章

  1. 线程状态,优先级,守护线程基础详解
  2. jQuery 实现五星好评
  3. RS422管脚定义说明
  4. js模块化(ESModule与CommonJS)
  5. linux开启rdp服务,让windows电脑mstsc远程,linux rdesktop远程windows机器
  6. 关于康托展开的用途及写法
  7. webpack之配置es6转换成es5
  8. 推荐五个常用的免费图片素材下载网站
  9. 西门子S7-200SMART控制步进电机(五)
  10. 安居客 楼盘信息 项目代码-