[BZOJ1509][NOI2003]逃学的小孩

1509: [NOI2003]逃学的小孩

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 968  Solved: 489
[Submit][Status][Discuss]

Description

Input

第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数。以下M行,每行给出一条街道的信息。第i+1行包含整数Ui、Vi、Ti(1Ui, Vi  N,1  Ti  1000000000),表示街道i连接居住点Ui和Vi,并且经过街道i需花费Ti分钟。街道信息不会重复给出。

Output

仅包含整数T,即最坏情况下Chris的父母需要花费T分钟才能找到Chris。

Sample Input

4 3
1 2 1
2 3 1
3 4 1

Sample Output

4
枚举每个点为三条路径的交点,设到这个点的第一、二、三长链的长度分别为$x,y,z$,则最长路径为$x+2*y+z$
注意可能从父亲那里有一条链连过来,所以dfs两遍
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char buf[10000000], *ptr = buf - 1;
inline int readint() {int n = 0;char ch = *++ptr;while (ch< '0' || ch > '9') ch = *++ptr;while (ch <= '9' && ch >= '0') {n = (n << 1) + (n << 3) + ch - '0';ch = *++ptr;}return n;
}
typedef long long ll;
const int maxn = 200000 + 10;
const ll INF = 1LL << 60;
struct Edge {int to, val, next;Edge() {}Edge(int _t, int _v, int _n) : to(_t), val(_v), next(_n) {}
}e[maxn * 2];
int fir[maxn] = { 0 }, cnt = 0;
inline void ins(int u, int v, int w) {e[++cnt] = Edge(v, w, fir[u]); fir[u] = cnt;e[++cnt] = Edge(u, w, fir[v]); fir[v] = cnt;
}
int fa[maxn];
ll mx1[maxn], mx2[maxn], mx3[maxn], f[maxn];
void dfs1(int u) {mx1[u] = mx2[u] = mx3[u] = 0;for (int v, i = fir[u]; i; i = e[i].next) {v = e[i].to;if (v == fa[u]) continue;fa[v] = u;dfs1(v);mx3[u] = max(mx3[u], mx1[v] + e[i].val);if (mx3[u] > mx2[u]) swap(mx3[u], mx2[u]);if (mx2[u] > mx1[u]) swap(mx2[u], mx1[u]);}
}
void dfs2(int u) {for (int v, i = fir[u]; i; i = e[i].next) {v = e[i].to;if (v == fa[u]) continue;f[v] = f[u] + e[i].val;if (mx1[v] + e[i].val == mx1[u])f[v] = max(f[v], mx2[u] + e[i].val);elsef[v] = max(f[v], mx1[u] + e[i].val);dfs2(v);}
}
ll ans = 0;
inline void solve(ll &x, ll &y, ll &z) {if (z > y) swap(z, y);if (y > x) swap(y, x);ans = max(ans, x + (y << 1) + z);
}
int main() {fread(buf, sizeof(char), sizeof(buf), stdin);int n = readint();readint();for (int u, v, w, i = 1; i < n; i++) {u = readint();v = readint();w = readint();ins(u, v, w);}fa[1] = 0;dfs1(1);f[1] = 0;dfs2(1);for (int i = 1; i <= n; i++)if (f[i] < mx3[i]) solve(mx1[i], mx2[i], mx3[i]);else solve(mx1[i], mx2[i], f[i]);printf("%lld\n", ans);return 0;
}

 

转载于:https://www.cnblogs.com/ruoruoruo/p/7612276.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关闭 Visual Studio 2013 的 Browser Link 功能

什么是 Browser Link ? 这个 Browser Link 的功能就是通过一个脚本文件架起流程器和 Visual Studio IDE 之前的一个通信桥梁&#xff0c; 在启用 Browser Link 后&#xff0c; Visual Studio 会给网站注入一个 IHttpModule 模块对象&#xff0c; 然后在每个页面都会注册一段上…

Groove list操作-转数组,collect,each等

2019独角兽企业重金招聘Python工程师标准>>> list转换为数组 List list [a,b,c,d] def strs list as String[] println strs[0] 使用了Groovy语言&#xff0c;就能时不时的感受到Groovy语言在编码风格上与Java语言的不同。当然&#xff0c;我们首先感受到的可能就…

支持多种操作系统的新一代服务主机

一个应用需要常驻操作系统后台服务&#xff0c;可选框架有WindowsServiceLifeTime和SystemdLifeTime&#xff0c;但需要区别对待不同操作系统且需要另外写命令安装。NewLife.Agent自2008年设计以来&#xff0c;一直秉着简单易用的原则&#xff0c;不仅实现了服务框架&#xff0…

[翻译]Dapr 长程测试和混沌测试

介绍这是Dapr的特色项目&#xff0c;具体参见&#xff1a;https://github.com/dapr/test-infra/issues/11 &#xff0c;在全天候运行的应用程序中保持Dapr可靠性至关重要。在部署真正的应用程序之前&#xff0c;可以通过在受控的混沌环境中构建&#xff0c;部署和操作此类应用程…

Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

一、问题描述&#xff1a; 在服务器端可以正常连接并操作mysql&#xff0c;但是在windows端使用navicat工具远程ssh连接就出现下面错误。 1、服务器端&#xff1a; 2、windows端navicat连接 3、原因 原来我今天在做主从配置的时候&#xff0c;将 /etc/my.cnf 配置文件中的b…

自定义ProgressBar(圆)

2019独角兽企业重金招聘Python工程师标准>>> <lib.view.progressbar.ColorArcProgressBarandroid:layout_width"match_parent"android:layout_height"220dip"android:id"id/barInterest"android:layout_centerInParent"true&…

C# Task用法详解

概述Task是微软在.Net 4.0时代推出来的&#xff0c;Task看起来像一个Thread&#xff0c;实际上&#xff0c;它是在ThreadPool的基础上进行的封装&#xff0c;Task的控制和扩展性很强&#xff0c;在线程的延续、阻塞、取消、超时等方面远胜于Thread和ThreadPool&#xff0c;所以…

函数调用堆栈图

转载于:https://www.cnblogs.com/DeeLMind/p/7617972.html

Session的原理,大型网站中Session方面应注意什么?

一、Session和Cookie的区别 Session是在服务器端保持会话数据的一种方法&#xff08;通常用于pc端网站保持登录状态&#xff0c;手机端通常会使用token方式实现&#xff09;&#xff0c;存储在服务端。 Cookie是在客户端保持用户数据&#xff0c;存储位置是客户端&#xff08…

两圆相交求面积 hdu5120

转载 两圆相交分如下集中情况&#xff1a;相离、相切、相交、包含。 设两圆圆心分别是O1和O2&#xff0c;半径分别是r1和r2&#xff0c;设d为两圆心距离。又因为两圆有大有小&#xff0c;我们设较小的圆是O1。 相离相切的面积为零&#xff0c;代码如下&#xff1a; [cpp] view …

Python_list部分功能介绍

x.append():在列表尾部添加一个元素 x.clear():把列表清空 x.count():判断某个元素出现的次数 x.extend():合并两个列表&#xff0c;或者一个元组 x.index():获取元素下标 x.insert():指定下标添加元素 x.pop():移除某一元素&#xff0c;移除的元素可获取 x.remove():移除指定的…

一招解决开发环境问题 —— 远程容器开发指南

前言使用C作为主要开发语言的程序猿们应该会认同搭建开发环境是一件烦人的事情。为了编译一个程序不仅需要下载各种依赖包&#xff0c;还可能面临本地系统不兼容、编译器版本不一致、包版本冲突等各种问题。笔者在运营iLogtail开源社区的过程中发现开发和调试环境问题也是成员问…

UITabBarController的基本原理及使用(一)

前言 UITabBarController在iOS开发中是一个高频使用的控制器&#xff0c;典型的案例如QQ、微信均使用UITabBarController布局。本文将从一个新建工程&#xff0c;和大家一起了解UITabBarController的基本原理和使用方法。 基本概念 UITabBarController能够方便地管理多个控制器…

C# 多线程ThreadPool用法举例

概述ThreadPool是.Net Framework 2.0版本中出现的。自从Task出来以后&#xff0c;ThreadPool已经很少用了&#xff0c;但是一些老的代码或者一些古老的程序猿还是会用到他&#xff0c;所以我们可以不用它&#xff0c;但是还是有必须学习和了解他.ThreadPool用法举例static void…

Mysql实现主从复制(一主双从)

一、环境介绍 LNMP&#xff08;centos7&#xff0c;mysql5.6&#xff09; vmware workstation pro配置了3个虚拟机&#xff0c;均安装了LNMP环境&#xff1a; master&#xff1a; 192.168.0.105 slave&#xff1a; 192.168.0.106 、192.168.0.107 二、原理 &a…

接口文档神器Swagger(下篇)

本文来自网易云社区作者&#xff1a;李哲二、Swagger-springmvc原理解析上面介绍了如何将springmvc和springboot与swagger结合&#xff0c;通过简单配置生成接口文档&#xff0c;以及介绍了swagger提供的一些注解。下面将介绍swagger是如何做到与springmvc结合&#xff0c;自动…

利用python进行数据分析D1——ch02引言

基础的课程还没学完&#xff0c;就来这本了&#xff0c;因为我平时的研究还是以数据的处理为主。把自己的事做好做细致读了一下介绍部分&#xff0c;下载书里用到的数据&#xff0c;下载地址&#xff1a;https://github.com/wesm/pydata-book 如果你需要完成以下几大类任务&…

记一次Memory Leak分析

起因&#xff1a;最近公司的一个web产品遇到了内存溢出&#xff0c;于是开始着手调查。调查&#xff1a;首先当务之急是找到那个或那些API导致Memory Leak&#xff0c;这个应该不难&#xff0c;根据监控分析&#xff0c;在内存上升时间段内有哪些API被访问&#xff0c;再就是根…

WebSocket教程

一、为什么需要 WebSocket&#xff1f; 初次接触 WebSocket 的人&#xff0c;都会问同样的问题&#xff1a;我们已经有了 HTTP 协议&#xff0c;为什么还需要另一个协议&#xff1f;它能带来什么好处&#xff1f; 答案很简单&#xff0c;因为 HTTP 协议有一个缺陷&#xff1a…

C# WPF十个美观的界面设计展示

概述很多时候&#xff0c;我们设计的界面总是感觉缺乏美感&#xff0c;不是我们不会开发好看的界面&#xff0c;而是不知道怎么才算美观&#xff0c;这时候我们不妨看看别人好的页面是怎么做的.下面展示一些我觉得做的比较好的cs界面&#xff0c;希望能给大家在平时做界面设计时…