bzoj 2435: [Noi2011]道路修建【树形dp】
2024-09-05 22:04:08
dp求size和deep,然后对每条边模拟求代价即可
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1000005;
int n,h[N],cnt,si[N],de[N];
long long ans;
struct qwe
{
int ne,no,to,va;
}e[N<<1];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void add(int u,int v,int w)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].no=u;
e[cnt].to=v;
e[cnt].va=w;
h[u]=cnt;
}
void dfs(int u,int fa)
{
si[u]=1,de[u]=de[fa]+1;
for(int i=h[u];i;i=e[i].ne)
if(e[i].to!=fa)
{
dfs(e[i].to,u);
si[u]+=si[e[i].to];
}
}
int main()
{
n=read();
for(int i=1;i<n;i++)
{
int x=read(),y=read(),z=read();
add(x,y,z),add(y,x,z);
}
dfs(1,0);
for(int i=1;i<=cnt;i+=2)
{
int x=de[e[i].no]>de[e[i].to]?e[i].no:e[i].to;
ans+=1ll*abs(n-2*si[x])*e[i].va;
}
printf("%lld\n",ans);
return 0;
}
最新文章
- 【Java每日一题】20161228
- 第 21 章 CSS3 文本效果
- 第六章、Struts2数据校验
- 关于jstl标签引入的问题
- (转)VS2008连接TFS 2010
- 多语言的sitemap xml
- Android知识思维导图
- 用户名 不在 sudoers文件中,此事将被报告
- D3.js:坐标轴
- javascript 简单工厂
- PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
- 解决 golang unrecognized import path ";golang.org/x"; 之类错误的一种尝试
- php 按月创建日志
- 【计算机篇】Office 2016 for Mac 安装和破解教程
- oracle收集ash和awr性能报告方法
- 深入了解浏览器存储:对比Cookie、LocalStorage、sessionStorage与IndexedDB
- 怎么精确控制solidworks里面的表格的位置
- Java的家庭记账本程序(F)
- RabbitMQ消息可靠性分析和应用
- P4426 [HNOI/AHOI2018]毒瘤