[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1999

[算法]

树的直径 + 单调队列

[代码]

#include<bits/stdc++.h>
using namespace std;
#define MAXN 500010
const int INF = 2e9; int i,n,s,ans,head,tail,m,t,tot,u,v,w,l,r;
int pre[MAXN],dis[MAXN],h[MAXN],f[MAXN],mx[MAXN],q[MAXN];
bool visited[MAXN]; struct edge
{
int to,w,nxt;
} e[MAXN << ];
vector< pair<int,int> > path; inline void addedge(int u,int v,int w)
{
tot++;
e[tot] = (edge){v,w,h[u]};
h[u] = tot;
}
inline int bfs(int s)
{
int i,cur,v,w,m;
queue< int > q;
q.push(s);
dis[s] = ;
pre[s] = ;
while (!q.empty())
{
cur = q.front();
q.pop();
for (i = h[cur]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (!dis[v] && v != s)
{
dis[v] = dis[cur] + w;
q.push(v);
pre[v] = cur;
}
}
}
m = ;
for (i = ; i <= n; i++)
{
if (dis[i] > dis[m])
m = i;
}
return m;
}
inline void bfsII(int s)
{
int i,cur,v,w;
queue< int > q;
q.push(s);
while (!q.empty())
{
cur = q.front();
q.pop();
for (i = h[cur]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (!visited[v] && !f[v])
{
visited[v] = true;
f[v] = f[cur] + w;
mx[s] = max(mx[s],f[v]);
q.push(v);
}
}
}
}
int main()
{ scanf("%d%d",&n,&m);
for (i = ; i < n; i++)
{
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
}
s = bfs();
memset(dis,,sizeof(dis));
t = bfs(s);
for (i = t; i; i = pre[i]) visited[i] = true;
for (i = t; i; i = pre[i]) bfsII(i);
q[] = t;
l = r = t;
head = tail = ;
ans = INF;
for (l = t; l; l = pre[l])
{
while (pre[r] && dis[l] - dis[pre[r]] <= m)
{
r = pre[r];
while (head <= tail && mx[q[tail]] <= mx[r]) tail--;
q[++tail] = r;
ans = min(ans,max(mx[q[head]],max(dis[r] - dis[s],dis[t] - dis[l])));
}
if (q[head] == l) head++;
}
printf("%d\n",ans); return ; }

[NOIP 2007] 树网的核的更多相关文章

  1. NOIP 2007树网的核

    题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...

  2. 树网的核 2007年NOIP全国联赛提高组(floyed)

    树网的核 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description [问题描述]设 T= ...

  3. noip2007 树网的核

    P1099 树网的核 112通过 221提交 题目提供者该用户不存在 标签动态规划树形结构2007NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 设T=(V, E, W) ...

  4. 洛谷 P1099 树网的核

    P1099 树网的核 题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W ...

  5. [NOIP2007] 提高组 洛谷P1099 树网的核

    题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...

  6. 洛谷1099 [NOIP2007] 树网的核

    链接https://www.luogu.org/problemnew/show/P1099 题目描述 设T=(V,E,W)是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称TTT为 ...

  7. [bzoj1999]树网的核

    从下午坑到网上..noip的数据太弱,若干的地方写挂结果还随便过= = 最坑的就是网上有些题解没考虑周全... 第一步是找直径,用两次bfs(或者dfs,Linux下系统栈挺大的..)解决.找出其中一 ...

  8. BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防

    一道树的直径 树网的核 BZOJ原题链接 树网的核 洛谷原题链接 消防 BZOJ原题链接 消防 洛谷原题链接 一份代码四倍经验,爽 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍 ...

  9. BZOJ1999 树网的核[数据加强版]

    1999: [Noip2007]Core树网的核 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1214  Solved: 336[Submit][St ...

随机推荐

  1. JavaScript 浏览器事件解读

    1. 事件基本概念 事件是指在文档或者浏览器中发生的一些特定交互瞬间,比如打开某一个网页,浏览器加载完成后会触发 load 事件,当鼠标悬浮于某一个元素上时会触发 hover 事件,当鼠标点击某一个元 ...

  2. java编译器和java解释器、JVM

    作用: JVM:JVM有自己完善的硬件架构,如处理器.堆栈(Stack).寄存器等,还具有相应的指令系统(字节码就是一种指令格式).JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成 ...

  3. Android Studio连接夜神模拟器

    运行-cmd,进入夜神模拟器安装目录,进入目录下的bin 执行Nox_adb.exe connect 127.0.0.1:62001命令,connect左右都有空格. 执行命令后就可以连接到夜神模拟器 ...

  4. Apache安装简述

    软件下载地址:http://pan.baidu.com/s/1o8oexKI 1.httpd -k install 2.httpd -k restart 3.启动bin文件夹里的httpd.exe 4 ...

  5. hibernate_07_单表操作_增删改操作

    首先,创建类对象 package com.imooc.hibernate; public class Address { private String postcode; //邮编 private S ...

  6. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行

    中文步骤: 按住Shift->点击选项->首选项,松开Shift 点击右上角"内部"选项卡,在最下面的搜索栏输入SO4 找到第二项Enable So4 Compound ...

  7. openMSP430之Custom linker script

    The use of the -mmcu switch is of course NOT mandatory. It is simply a convenient way to use the pre ...

  8. SLAM: Structure From Motion-移动中三维场景重建

    wiki链接:https://en.wikipedia.org/wiki/Structure_from_motion 三维重建: 三维物体建模总结 1. 视野内三维物体重建 : Kinect fusi ...

  9. js 检查内容是否为空

    var NoViods = document.getElementsByClassName("NoVoid"); ; i < NoViods.length; i++) { i ...

  10. Python标准模块--logging(转载)

    转载地址:http://www.cnblogs.com/zhbzz2007/p/5943685.html#undefined Python标准模块--logging 1 logging模块简介 log ...