#include<cstdio>
#include<iostream>
#define M 400009
#define ll long long
using namespace std;
ll d[M],v[M],ans1;
int n,cnt=,head[M],next[M],u[M],mx,f[M],q[M],ans,mx1,fro[M],from[M],sum[M];
void jia(int a1,int a2,int a3)
{
cnt++;
from[cnt]=a1;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
v[cnt]=(ll)(a3)*(ll)(n);
return;
}
void bfs(int a1)
{
d[a1]=;
int h=,t=;
q[]=a1;
f[a1]=;
fro[a1]=;
sum[a1]=;
for(;h<t;)
{
int p=q[++h];
for(int i=head[p];i;i=next[i])
if(!f[u[i]])
{
f[u[i]]=;
q[++t]=u[i];
d[u[i]]=d[p]+v[i];
fro[u[i]]=i;
sum[u[i]]=sum[p]+;
}
}
return;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
{
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
jia(a1,a2,a3);
jia(a2,a1,a3);
}
bfs();
ll max1=;
for(int i=;i<=n;i++)
{
if(max1<d[i])
{
max1=d[i];
mx1=i;
}
f[i]=;
}
bfs(mx1);
max1=;
for(int i=;i<=n;i++)
{
if(max1<d[i])
{
max1=d[i];
ans=i;
}
f[i]=;
}
ans1=d[ans];
printf("%lld\n",d[ans]/n);
for(;ans;)
{
int p=fro[ans];
v[p]--;
v[p^]--;
ans=from[p];
}
bfs();
max1=;
for(int i=;i<=n;i++)
{
if(max1<d[i])
{
max1=d[i];
mx1=i;
}
f[i]=;
}
bfs(mx1);
max1=;
for(int i=;i<=n;i++)
if(max1<d[i])
{
max1=d[i];
ans=i;
}
printf("%lld\n",ans1-d[ans]);
return ;
}

先找一条直径,把直径上的边的权值减去1,再找一遍直径,差便是答案。

bzoj 3124: [Sdoi2013]直径的更多相关文章

  1. Bzoj 3124: [Sdoi2013]直径 题解

    3124: [Sdoi2013]直径 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1222  Solved: 580[Submit][Status] ...

  2. bzoj 3124 [Sdoi2013]直径(dfs)

    Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅有N-1 条边. 路径:一 ...

  3. 3124: [Sdoi2013]直径

    3124: [Sdoi2013]直径 https://www.lydsy.com/JudgeOnline/problem.php?id=3124 分析: 所有直径都经过的边,一定都是连续的一段.(画个 ...

  4. bzoj千题计划134:bzoj3124: [Sdoi2013]直径

    http://www.lydsy.com/JudgeOnline/problem.php?id=3124 第一问: dfs1.dfs2 dfs2中记录dis[i]表示点i距离最长链左端点的距离 第二问 ...

  5. bzoj3124: [Sdoi2013]直径 树形dp two points

    题目链接 bzoj3124: [Sdoi2013]直径 题解 发现所有直径都经过的边 一定在一条直径上,并且是连续的 在一条直径上找这段区间的两个就好了 代码 #include<map> ...

  6. [洛谷P3304] [SDOI2013]直径

    洛谷题目链接:[SDOI2013]直径 题目描述 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅 ...

  7. 【BZOJ3124】[Sdoi2013]直径 树形DP(不用结论)

    [BZOJ3124][Sdoi2013]直径 Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节 ...

  8. BZOJ_3124_[Sdoi2013]直径_树形DP

    BZOJ_3124_[Sdoi2013]直径_树形DP Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵 ...

  9. bzoj 3124 直径

    Written with StackEdit. Description 小\(Q\)最近学习了一些图论知识.根据课本,有如下定义. 树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一 ...

随机推荐

  1. Qt信号与槽应用实例一

    ..... connect(m_pGlobelWidget,signal(globeControlClick(object,object)),this,slot(globeControlClick(o ...

  2. confluence重置admin密码

    复方法: 1. 运行此sql 找到你的管理员帐户: select u.id, u.user_name, u.active from cwd_user u join cwd_membership m o ...

  3. RecycleView可以策划的Item

    public abstract class SwipeMenuViewHolder { /* 从左侧滑出菜单 */ public static final int EDGE_LEFT = 1; /* ...

  4. linux 互信不生效

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.  操作系统版本 1)操作系统 cat /etc/issue cat /etc/issue CentOS release 6.6 (Final ...

  5. 解决secureCRT数据库里没有找到防火墙 '无'问题

    中文版的secureCRT由于汉化的问题(把null翻译成无了),导致每次打开都会有个防火墙的错误提示:数据库里没有找到防火墙 '无' 此会话将尝试不通过防火墙进行连接.出现这个错误的原因是在secu ...

  6. Black World

  7. [课程设计]Scrum 1. 9 多鱼点餐系统开发进度(最后页面完善&修复BUG&用户测试反馈)

    [课程设计]Scrum 1. 9 多鱼点餐系统开发进度(最后页面完善&修复BUG&用户测试) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢 ...

  8. 简单练习题2编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能

    编写Java应用程序.首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”.“取款”和“余额查询”.其次, 编写一个主类,在主类中测试Account类的 ...

  9. Walls(floyd POJ1161)

    Walls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7677   Accepted: 3719 Description ...

  10. SQL语句中&、单引号等特殊符号的处理

    今天遇到一个insert语句,在SQL Tools(链接Oracle数据库)插入的某列值为“Computer Hardware & Software>>CPU",这样执行 ...