[题目链接]

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. 【Oracle】设置快速恢复区及reset快速恢复区

    快速恢复区 概念 是一个默认放置所有备份恢复操作有关文件的地方,包括:控制文件在线镜像.在线重做日志.归档日志.外来归档日志.控制文件镜像复制.数据文件镜像复制.RMAN备份片和闪回日志. 如果启用的 ...

  2. MyEclipse 连接Oracle数据库(初学者必看)

    前言:刚接触Oracle数据库,便有一个需求,编写控制台程序,实现主人登录.数据库为Oracle.下面详细介绍一下MyEclipse 连接Oracle数据库.   package DbHelp; im ...

  3. 移动端mui常用方法

    本文分享一些用Mui的时候所采的坑 1.mui中上拉刷新事件a标签中的链接.元素onclick事件在手机上点击不了 mui('body').on('tap','a',function(){docume ...

  4. 【编程工具】Vim编辑器的使用

    1.Vim简介   Vim最初起源于古老的贝尔实验室,由"Bram Moolenaar等人"开发,是一个功能强大的文本编辑器,被推崇为类Vi编辑器中最好的一个.   Vim是一个类 ...

  5. SDOI2017数字表格

    求$\prod_{i=1}^n\prod_{j=1}^n\text{Fib}[\gcd(i,j)]\;\text{mod}\;10^9+7$的值 令$n\leq m$,则有: \begin{align ...

  6. 突如其来的“中断异常”,我(Java)该如何处理?

    3.try-catch块 try语句块中代码执行时发生三种情况: try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行. import java.util.*; pub ...

  7. 学习EXTJS6(5)基本功能-进度条组件

    Ext.ProgressBar有二种模式:手动和自动:手动:自己控制显示.进度.更新.清除.自动只需要调用Wait方法即可. 配置项:   配置项 类型 说明 renderTo String 指定页面 ...

  8. 第一个GTK程序

    /*我已经把代码写在此处  希望借鉴和完善!一起加油奥(PS:我的QQ是1693672542欢迎加我一起进行探讨学习奥!!!)*/#include <stdio.h>#include< ...

  9. 0926MySQL中ICP索引下推

    转自 http://blog.itpub.net/22664653/viewspace-1678779/ [MySQL]MySQL5.6新特性之Index Condition Pushdown2015 ...

  10. 0606关于mysql优化原理

    转自 http://blog.csdn.net/u012388497/article/details/25097159 本文通过一个案例来看看MySQL优化器如何选择索引和JOIN顺序.表结构和数据准 ...