首页 > 其他分享 >BZOJ 2435: [Noi2011]道路修建 树的遍历-_-

BZOJ 2435: [Noi2011]道路修建 树的遍历-_-

时间:2023-07-07 13:31:40浏览次数:41  
标签:ci ch -_- 2435 修建 国家 道路 Noi2011 include



2435: [Noi2011]道路修建


Time Limit: 10 Sec  Memory Limit: 128 MB

Submit: 3810  Solved: 1300

[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

 




。。。这是11年的国赛题。。。醉了。。。

我这种辣鸡终于开始怀疑自己的智商。。。

别人说是什么树形dp。。。。我怎么不信呢

太鬼畜了。。。这。。太水了。。。。。。

遍历一遍就完了。。。。。。。。。。。。

括弧冷漠脸-__-


#include<cmath>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<complex>
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long ll;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
	return f*x;
}
const int N=1000010;
int n,ecnt,size[N],last[N];
bool vis[N];ll ans;
struct EDGE{int to,nt,val;}e[N<<1];
inline void add(int u,int v,int val)
{e[++ecnt]=(EDGE){v,last[u],val};last[u]=ecnt;}
void dfs(int u)
{
	size[u]=1;vis[u]=1;
	for(int i=last[u];i;i=e[i].nt)
	if(!vis[e[i].to])
	{
		dfs(e[i].to);
		size[u]+=size[e[i].to];
		ans+=ll(abs(n-2*size[e[i].to]))*ll(e[i].val);
	}
}
int main()
{
	n=read();int u,v,val;
	for(int i=1;i<n;i++)
	{
		u=read();v=read();val=read();
		add(u,v,val);add(v,u,val);
	}
	dfs(1);
	printf("%lld\n",ans);
	return 0;
}




标签:ci,ch,-_-,2435,修建,国家,道路,Noi2011,include
From: https://blog.51cto.com/u_16181403/6652029

相关文章

  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块5
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • [总结]2023-7-6A组模拟赛
    [总结]2023-7-6A组模拟赛P1心路历程看完题之后发现:唉,好像简单了一点。然后就开始想T1。一开始以为是DP,发现不好转移。不知道为什么脑子里面一直在想二维偏序,之后就往数据结构方面想。我发现:一个点,绝对不可能从后面走回来。类似于这样:之后就想到:如果是这样,那么到一个点路程......
  • package com.ws.byd.bmgl.bmzdpz:编码字典------bydobject
    controller:packagecom.ws.byd.bmgl.bmzdpz.controller;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.lang.O......
  • 【雕爷学编程】Arduino动手做(136)---0.91寸OLED液晶屏模块3
    0.91寸OLED模块引脚说明GND------地线VCC------电源(因为模块内部自带稳压,所以3.3~5V供电都是ok的)SDA------I2C数据线(接A4)SCL  ------I2C时钟线(接A5)(可以看到模块后面有一个U2芯片,就是用来稳压的) 项目之九:综合测试,中文显示Arduino实验开源代码 /*【Ardu......
  • linux----使用rm -rf 删除大文件后磁盘空间并未释放的解决办法
    https://blog.csdn.net/redrose2100/article/details/129573059【原文链接】linux----使用rm-rf删除大文件后磁盘空间并未释放的解决办法(1)问题:当发现linux系统中存在大文件,磁盘空间快满了后,一般会使用rm-rfxxx将大文件删除,但是删除后通过df-h发现磁盘空间并未释放(2)解决......
  • log4j.properties内容解析-------bydobject
    #ThisistheconfiguringforloggingdisplayedintheApplicationServer // 这是显示在应用程序服务器中的日志记录配置log4j.rootCategory=debug,stdout,logfile//stdout(自定义appenderName)/logfile(自定义appenderName) ---appenderName就是指......
  • 归并排序思考记录与代码实现 --- 图画的真累
    归并排序把数组不断从中间拆分,然后对前后两段分别排序,再将排好序的两部分合并在一起如下图数组排序。——分治思想:把大问题分解为小问题来解决,这通常会用到递归。由代码可知,归并排序就是将数组不断地从中间切开,然后对每份切开的前后排进行排序两种不用额外空间的算法,在......
  • 2023-7-5 #64 短暂回归撕开色盘 拼凑回忆填补空白
    ——泠笙《多重妄想》442P7729交通运输(WormholeTransportaion)挺不错的题目。第一问较为简单,建图后,容易发现答案是\(m-2\)加最小环长度\(L\)。第二问先考虑环的部分分,问题即为:计数带标号无根树的数量,使得\(\sum\operatorname{dis}(i,i\bmodn+1)=2n-2\)。提\(n\)为根,......
  • t113-c-内核字符型设备驱动篇
    那么既然ko的驱动已经可以运行,那么我们来写几个简单的操作设备树的内核驱动字符型设备驱动和应用层这俩种代码是分开的,设备驱动调用的是内核的地址,而应用层则是相当于虚拟地址,所以应用层传递参数的时候不能直接付给指针,要调用相对于的参数内核->驱动->应用驱动的编写找到sdk......