[题目链接]

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. Bootstrap中container与container-fluid的区别

    /*0-768px以上宽度container为100%*/ .container { padding-right: 15px; padding-left: 15px; margin-right: au ...

  2. 如何在Eclipse中创建Web服务器

    使用Eclipse开发Web项目时,需要先配置Web服务器,如果已经配置好Web服务器,就不需要再重新配置了.也就是说,本节的内容不是开发每个项目时,都必须经过的步骤.创建Web服务器的具体步骤如下: ...

  3. 用SQL Server查询所有数据并显示

    利用SQL Server查询数据,并把所有数据显示在页面上. "%> <%@page import="jdbc.sqlServer"%> <%@p ...

  4. ubuntu 14.04安装x11VNC

    环境:Ubuntu 14.04, 1)安装x11vnc: sudo apt-get install x11vnc 2)设置VNC的连接密码: x11vnc -storepasswd Enter VNC ...

  5. swift-自动计算字符串的宽高

    写一个方法来继承String //自动控制文字换行及宽度 extension String { func textSizeWithFont(font: UIFont, constrainedToSiz ...

  6. JVM学习-jvm结构(一)

    java是跨平台的语言.一次编译多端使用.究竟是如何实现的呢 1.首先编译器会将java 文件编译成class文件.然后在不同的平台使用对应的虚拟机.不同虚拟机的内装载系统将class文件转换平台能执 ...

  7. 【ACM】hdu_zs2_1007_Problem G _201308031028

    Problem G Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Subm ...

  8. 【ACM】NYOJ_506_洗澡_20130725

    洗澡时间限制:1000 ms  |  内存限制:65535 KB 难度:1描述 Mostrp是个爱干净的好少年. 有一次去澡堂洗澡时发现 澡堂的澡柜编号中没有出现过数字‘4’. Mostrp 感到很好 ...

  9. [bzoj2131]免费的馅饼_树状数组

    免费的馅饼 bzoj-2131 题目大意: 注释:$1\le n \le 10^5$,$1\le w \le 10^8$. 想法:首先,想到dp 状态:dp[i][j]表示i分钟在位置j的最大收益 优 ...

  10. Linux中tty是什么(tty1~7)

    tty:终端设备的统称. tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所 ...