洛谷比赛 U5442 买(最长链)
U5442 买
题目提供者bqsgwys
标签 树形结构 树的遍历 洛谷原创
题目背景
小E是个可爱的电路编码员。
题目描述
一天小E又要准备做电路了,他准备了一个电路板,上面有很多个电路元器件要安装,于是他跑到了村口某电子城去买。小E详细查看了某电子城的地图,发现自己要去地下一层,共有N个摊铺,任意两个摊铺之间由道路直接或间接相连,一共N-1条道路,道路是双向的。小E一开始处于1号摊铺的位置,由于电子城里很挤,他想走的尽量少。
输入输出格式
输入格式:
第一行一个整数N,代表摊铺的数目。
接下来N-1行,每行三个整数s, t, w,表示有一条从s号铺到t号铺的双向道路,长度为w。s和t的编号从1开始。
输出格式:
一个整数,代表对于每组数据能够访问每个摊铺至少一次的方案的最小行动长度。
输入输出样例
输入样例#1:
3
1 2 3
1 3 3
输出样例#1:
9
说明
1≤N≤50000,1≤w≤1000
/*
这题可以证明是求边权之和*2-最长链.
bfs从根的左树和右树分别跑最长链取大.
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#define MAXN 50001
using namespace std;
int head[MAXN],n,m,cut,ans,maxans,ans1,ans2,maxt,dis[MAXN],tot,fa[MAXN],tot1,tot2;
struct data{int v,next,x;}e[MAXN*2];
bool b[MAXN];
int read1()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
void add(int u,int v,int z)
{
e[++cut].v=v;
e[cut].next=head[u];
e[cut].x=z;
head[u]=cut;
}
void dfs(int u,int f)
{
fa[u]=f;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].v;
if(f!=v&&!fa[v])
{
if(u==1)
{
if(!tot1) tot1=v,ans1=e[i].x;
else tot2=v,ans2=e[i].x;
}
tot+=e[i].x;
dfs(v,u);
}
}
}
void spfa(int s)
{
int u,v;
memset(dis,-1,sizeof dis);
memset(b,0,sizeof b);
queue<int>q;q.push(s);dis[s]=0;
while(!q.empty())
{
u=q.front();q.pop();b[u]=false;
for(int i=head[u];i;i=e[i].next)
{
v=e[i].v;
if(v==1) continue;
if(dis[v]==-1)
{
dis[v]=dis[u]+e[i].x;
if(dis[v]>ans)
{
ans=dis[v];
maxt=v;
}
if(!b[v]) b[v]=true,q.push(v);
}
}
}
}
int main()
{
int x,y,z;
n=read1();
for(int i=1;i<=n-1;i++)
{
x=read1(),y=read1(),z=read1();
add(x,y,z);add(y,x,z);
}
dfs(1,1);
spfa(tot1);
ans+=ans1;
maxans=max(maxans,ans);
ans=0;spfa(tot2);ans+=ans2;
maxans=max(maxans,ans);
printf("%d",2*tot-maxans);
return 0;
}
洛谷比赛 U5442 买(最长链)的更多相关文章
- 洛谷 - P1434 - 滑雪 - 有向图最长链
https://www.luogu.org/problemnew/show/P1434 有向图的最长链怎么求?有环肯定不行,这里保证无环.(否则应该使用toposort先求出所有不带环的位置) 设dp ...
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- 洛谷 P3384 【模板】树链剖分-树链剖分(点权)(路径节点更新、路径求和、子树节点更新、子树求和)模板-备注结合一下以前写的题目,懒得写很详细的注释
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
- 洛谷p3384【模板】树链剖分题解
洛谷p3384 [模板]树链剖分错误记录 首先感谢\(lfd\)在课上调了出来\(Orz\) \(1\).以后少写全局变量 \(2\).线段树递归的时候最好把左右区间一起传 \(3\).写\(dfs\ ...
- 洛谷 P3384 【模板】树链剖分
树链剖分 将一棵树的每个节点到它所有子节点中子树和(所包含的点的个数)最大的那个子节点的这条边标记为"重边". 将其他的边标记为"轻边". 若果一个非根节点的子 ...
- 洛谷P3459 [POI2007]MEG-Megalopolis(树链剖分,Splay)
洛谷题目传送门 正解是树状数组维护dfn序上的前缀和,这样的思路真是又玄学又令我惊叹( 我太弱啦,根本想不到)Orz各路Dalao 今天考了这道题,数据范围还比洛谷的小,只有\(10^5\)(害我复制 ...
- 树剖模板(洛谷P3384 【模板】树链剖分)(树链剖分,树状数组,树的dfn序)
洛谷题目传送门 仍然是一个板子. 不过蒟蒻去学了一下BIT维护区间修改区间求和,常数果真十分优秀 设数列为\(a_i\),差分数组\(d_ i=a_ i-a_ {i-1}\),前缀和\(s_i=\su ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 洛谷比赛 堕落的Joe
/*暴力50*/ #include<iostream> #include<cstdio> #include<cstring> #define maxn 100010 ...
随机推荐
- SSD目标检测实战(TF项目)——人脸检测2
数据转化为VOC格式: 一.我们先看 VOC格式的数据是什么??? Annotations:存放xml 包括 文件夹信息 图片名称. 图片尺寸信息. 图片中object的信息. JPEGImage ...
- 深入理解计算机系统 第十二章 并发编程 part1 第二遍
三种构造并发程序的方法及其优缺点 1.进程 用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制. 优点: ...
- CentOS/RHEL 安装EPEL第三方软件源
EPEL源简介 EPEL(Extra Packages for Enterprise Linux) 是由 FedORA 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目.装 ...
- 适配方案(二)之PC端适配
PC端 特点 PC端的屏幕具备以下特点: 屏幕大小一般是大于 13.3英寸 用户会经常拖拉浏览器的大小 原因 正是因为 PC端上的浏览器大小会经常被改变,而且改变的范围还很大,用户会全屏浏览器,用户也 ...
- Oracle学习笔记:一个简单的行转列例子
一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...
- sass之mixin的全局引入(vue3.0)
sass之mixin的全局引入(vue3.0) 1.scss文件(mixin.scss) /* 渐变 */ @mixin gradual($color, $color1){ background: $ ...
- CSS3总结四:盒模型(box)
盒模型:标准盒模型.混杂盒模型 什么时候会触发混杂模式? 为什么要混杂模式渲染规则盒模型? box-sizing:content-box.border-box 关于盒模型的一些其他样式和属性值 一.盒 ...
- git 多账户添加ssh秘钥
生成秘钥的步骤: ssh-keygen -t rsa -C "xxxx@qq.com" 添加秘钥 在不同的域中添加相同的秘钥是没有问题的,比如 github.com / code. ...
- Java并发与多线程
1. 并发与并行 并发是指某个时间段内,多任务交替处理的能力:并行是指同时处理多任务的能力,多核CPU可以实现并行任务. 并发执行的特点: (1)并发程序间相互制约:程序执行结果的相互依赖以及共享资源 ...
- TP-LINK WR941N路由器研究
TP-LINK WR941N路由器研究 之前看到了一个CVE, CVE-2017-13772 是TP-Link WR940N后台的RCE, 手头上正好有一个TP-Link WR941N的设备,发现也存 ...