[题目链接]

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

[算法]

树的直径

[代码]

#include<bits/stdc++.h>
using namespace std;
#define MAXN 200010 struct edge
{
int to,w,nxt;
} e[MAXN << ]; int i,n,s,t,cnt,tmp,tot,u,v,w,l,r;
long long mx;
int path[MAXN],head[MAXN],pre[MAXN];
long long dist[MAXN];
bool visited[MAXN]; inline void addedge(int u,int v,int w)
{
tot++;
e[tot] = (edge){v,w,head[u]};
head[u] = tot;
}
inline int bfs(int s)
{
int i,u,v,w,l,r,pos;
static int q[MAXN];
static bool visited[MAXN];
for (i = ; i <= n; i++) visited[i] = false;
q[l = r = ] = s;
dist[s] = ;
pre[s] = ;
visited[s] = true;
while (l <= r)
{
u = q[l];
l++;
for (i = head[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (!visited[v])
{
visited[v] = true;
dist[v] = (long long)dist[u] + w;
pre[v] = u;
q[++r] = v;
}
}
}
pos = ;
for (i = ; i <= n; i++)
{
if (dist[i] > dist[pos])
pos = i;
}
return pos;
}
inline void dfs(int u,int fa,long long sum)
{
int i,v,w;
mx = max(mx,sum);
for (i = head[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (v != fa && !visited[v]) dfs(v,u,sum + w);
}
} int main()
{ scanf("%d",&n);
for (i = ; i < n; i++)
{
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
}
s = bfs();
t = bfs(s);
printf("%lld\n",dist[t]);
tmp = t;
while (tmp != )
{
path[++cnt] = tmp;
tmp = pre[tmp];
visited[tmp] = true;
}
reverse(path + ,path + cnt + );
l = ,r = cnt;
for (i = cnt; i >= ; i--)
{
mx = ;
dfs(path[i],,);
if (!mx) continue;
if (mx == dist[t] - dist[path[i]]) r = i;
if (mx == dist[path[i]])
{
l = i;
break;
}
}
printf("%d\n",r - l); return ; }

[SDOI 2013] 直径的更多相关文章

  1. [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+并查集+启发式合并)

    [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值.有两种操作: Q x y k查询点x到点y路径上所有的权值中 ...

  2. BZOJ 3203 sdoi 2013 保护出题人

    由于样例解释很清晰,所以很容易得到以下结论: 1.每一关都是独立的,且僵尸的相对位置不会变 2.每一关的攻击力=Max(sum(i)/dis(i)) 其实sum(i)是僵尸攻击力的前缀和,dis(i) ...

  3. [SDOI 2013]方程

    Description 题库链接 求不定方程 \(x_1+x_2+\cdots +x_n=m\) 的正整数解的个数,并且要求满足限定: \(\forall i\in[1,n_1] x_i\leq a_ ...

  4. [SDOI 2013]森林

    Description 题库链接 给你 \(n\) 个节点,初始 \(m\) 条边, \(t\) 组操作.让你支持: 询问树上路径点权 \(K\) 小: 支持加边操作. 强制在线,所有状态保证是一个树 ...

  5. 解题:SDOI 2013 保护出题人

    题面 首先是愉快的推式子 $dp[i]=max(dp[i],\frac{sum[i]-sum[j-1]}{x[i]+(i-j)*d})(1<=j<=i<=n)$(考虑有一只僵尸正好走 ...

  6. 「BZOJ 3123」「SDOI 2013」森林「启发式合并」

    题意 你有一个森林,你需要支持两个操作 查询两个结点路径上权值第\(k\)小 两个点之间连一条边 强制在线,结点数\(\leq 8\times 10^4\) 题解 如果可以离线,这就是一个主席树板子题 ...

  7. bzoj 3202 [Sdoi 2013] 项链 —— 置换+计数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3202 参考了博客: https://www.cnblogs.com/zhoushuyu/p/ ...

  8. [日常摸鱼]bzoj3122 [Sdoi]2013 随机数生成器

    又是写了一晚上才过的题- 题意:有一个数列$x_n=(ax_{n-1}+b) mod p$,给你$x_1,a,b,p,t$,求最小的$x_i=t$的$i$,可能不存在 一开始很自然的推出了式子$x_n ...

  9. HNOI 2012 永无乡

    codevs 1477 永无乡 http://codevs.cn/problem/1477/ 2012年湖南湖北省队选拔赛  时间限制: 1 s  空间限制: 128000 KB   题目描述 Des ...

随机推荐

  1. 移动web——bootstrap响应式轮播图

    基本介绍 1.bootstrap有轮播图的模板,我们只需要改动下就行. 2.这里我们将介绍桌面版本和移动版本最后是综合版本 桌面版本 1.这里的图片设置是有窍门的,不再去添加img标签,而是作为a标签 ...

  2. 剔除重复jar包,查找重复类

    作为程序员,没有遇到过jar包冲突,不是你幸运,就是你还年轻. jar包冲突有着无穷的魔力,一提到就会有说不完的怨愤,道不清的忧伤,这都是内伤.jar 包冲突就像深藏地底的地雷,看上去平常无奇,一切是 ...

  3. 清除Linux系统多余引导选项

    由于我把系统给升级(update)了,在grub引导模式出现新旧版本(Grub与Grub2)的引导系统分别为正常启动和进入恢复模式各2个引导项,如下图显示:百度找不到相关或类似的教程,只好半夜起来研究 ...

  4. Java笔记整理列表

    整理Java相关知识点. 2018-11-20 1:Java入门学习 2:Java进阶

  5. 关于在win7旗舰版32位上 安装 net4.0 的闪退问题研究 和安装sqlserver2008问题

    1.配置文件客户端[目标x86x64]的 可以安装 2.配置文件完全的目标x86x64的 出现闪退. 3.服务器核心的出现无法安装 安装 sqlserver 2008R2数据库 报错 \最后留下了它, ...

  6. Math.floor() 与 parseInt()

    parseInt()与Math.floor()都能实现数字的向下取整,但是两者存在根本上的差异,1.Math.floor()用于一个数的向下取整,不能解析字符串 <script type=&qu ...

  7. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...

  8. 比n大的最小不重复数

    void Calculate(int a) { int pa = a; ; ] = {}; //将pa按位存储到数组b ) { b[count++] = pa%; pa = pa/; } bool f ...

  9. 洛谷——P2574 XOR的艺术

    P2574 XOR的艺术 很久之前就想挑战一下这道题了,线段树下传标记的入门题,跟区间加法下传标记类似. #include<bits/stdc++.h> #define N 1000005 ...

  10. Vova and Trophies CodeForces - 1082B(思维题)

    Vova has won nn trophies in different competitions. Each trophy is either golden or silver. The trop ...