BZOJ 2435:[Noi2011]道路修建(树型DP)
2024-09-01 00:46:08
http://www.lydsy.com/JudgeOnline/problem.php?id=2435
题意:中文题意。
思路:很简单的树形DP,sz记录儿子有多少个和cur记录走的哪条弧,然后直接算就可以了。(时间有点紧)。
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1000010
struct Edge {
int v, w, nxt;
} edge[N*];
int head[N], tot, cur[N]; long long sz[N]; void Add(int u, int v, int w) {
edge[tot] = (Edge) {v, w, head[u]}; head[u] = tot++;
edge[tot] = (Edge) {u, w, head[v]}; head[v] = tot++;
} void DFS(int u, int fa) {
sz[u] = ;
for(int i = head[u]; ~i; i = edge[i].nxt) {
int v = edge[i].v;
if(v == fa) continue;
cur[v] = i;
DFS(v, u);
sz[u] += sz[v];
}
} int main() {
int n;
while(~scanf("%d", &n)) {
tot = ;
memset(head, -, sizeof(head));
memset(sz, , sizeof(sz));
for(int i = ; i < n; i++) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
Add(u, v, w);
}
DFS(, -);
long long ans = ;
for(int i = ; i <= n; i++) {
ans += (long long)edge[cur[i]].w * abs(n - sz[i] - sz[i]);
}
printf("%lld\n", ans);
}
return ;
}
最新文章
- JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片
- Vue-router中文教程-Vue-router参考手册.CHM
- java用字符写字符
- 树链剖分I 原理
- tableview_nav 动画效果
- SpringMVC4.0.3 @ResponseBody JSON 中文乱码问题
- .net中判断距离高考多长时间的js函数
- hadoop错误Cannot load libcrypto.so (libcrypto.so cannot open shared object file No such file or directory)
- Cocos3.0测试版发布(中文)
- [Jobdu] 题目1361:翻转单词顺序
- BZOJ 4145: [AMPPZ2014]The Prices( 状压dp + 01背包 )
- mysql 修改数据库data存放位置
- ABP入门系列(6)——定义导航菜单
- 类似Jquery ui 标签页(Tabs)
- C# 因缺少CategoryName,而未能初始化 的解决办法
- C# 文件下载工具类FileDownHelper
- git clone git@github.com:snuglove/ 报错
- 微信小程序分包跳转主包页面
- cobbler实现系统自动化安装centos
- 基于fpga的vga学习(2)