bzoj 3124: [Sdoi2013]直径
#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]直径的更多相关文章
- Bzoj 3124: [Sdoi2013]直径 题解
3124: [Sdoi2013]直径 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1222 Solved: 580[Submit][Status] ...
- bzoj 3124 [Sdoi2013]直径(dfs)
Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅有N-1 条边. 路径:一 ...
- 3124: [Sdoi2013]直径
3124: [Sdoi2013]直径 https://www.lydsy.com/JudgeOnline/problem.php?id=3124 分析: 所有直径都经过的边,一定都是连续的一段.(画个 ...
- bzoj千题计划134:bzoj3124: [Sdoi2013]直径
http://www.lydsy.com/JudgeOnline/problem.php?id=3124 第一问: dfs1.dfs2 dfs2中记录dis[i]表示点i距离最长链左端点的距离 第二问 ...
- bzoj3124: [Sdoi2013]直径 树形dp two points
题目链接 bzoj3124: [Sdoi2013]直径 题解 发现所有直径都经过的边 一定在一条直径上,并且是连续的 在一条直径上找这段区间的两个就好了 代码 #include<map> ...
- [洛谷P3304] [SDOI2013]直径
洛谷题目链接:[SDOI2013]直径 题目描述 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅 ...
- 【BZOJ3124】[Sdoi2013]直径 树形DP(不用结论)
[BZOJ3124][Sdoi2013]直径 Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节 ...
- BZOJ_3124_[Sdoi2013]直径_树形DP
BZOJ_3124_[Sdoi2013]直径_树形DP Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵 ...
- bzoj 3124 直径
Written with StackEdit. Description 小\(Q\)最近学习了一些图论知识.根据课本,有如下定义. 树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一 ...
随机推荐
- biztalk重新发布
前提:在vs2013中,项目属性:重新部署设置为true,重新启动主机实例:设置为true,或者在最后重新部署完以后手动重启主机实例 下面是具体的步骤: 1. 项目修改完重新生成.. 2. 转到biz ...
- C#.NET 字符串转数组,数组转字符串
string str = "1,2,3,4,5,6,7"; string[] strArray = str.Split(','); //字符串转数组 ...
- ftp 530 This FTP serveris anonymous only,
引用:http://blog.sina.com.cn/s/blog_7e16680c01018ox1.html 三.遇到的问题 1.只允许匿名用户登录 现象:ftp连接过程中,提示输入用户名,输入本机 ...
- 聚类算法之BIRCH(Java实现)转载
http://www.cnblogs.com/zhangchaoyang/articles/2200800.html http://blog.csdn.net/qll125596718/article ...
- 关于jquery-validate验证表单
最近在做微信端的界面,一直写表单验证!一直在写表单验证!发现jquery-validate还真是好用哎,今天总结了一些: (1)required:true 必输字段(2)remote:"ch ...
- viewpager实现酷炫侧滑demo
晚上叫外卖,打开饿了么,发现推了一个版本,更新以后,点开了个鸡腿,哇,交互炫炸了. 不过还是有槽点.我是无意中才发现可以左右滑动的.这...你不告诉我,我怎么知道左右可以滑. https://gith ...
- Why does pthread_cond_signal not work?【转】
转自:http://stackoverflow.com/questions/16819169/why-does-pthread-cond-signal-not-work# 0 down vote fa ...
- python开发进阶之路(一)
哎!好久没有写博客了,怪想念的,今天听了偶像的讲解,好多以前感觉很模糊的概念今天一下子就明朗了.下面就来整理一下今天的收获 一.如何成为一名优秀的开发人员 1.1 得先对自己使用的开发语言了如指掌, ...
- LeetCode----8. String to Integer (atoi)(Java)
package myAtoi8; /* * Implement atoi to convert a string to an integer. Hint: Carefully consider all ...
- dom4j-1.6.1.jar与dom4j-1.4.jar
今天在上线的项目中遇到一个很奇怪的问题 File file = new File("O:/20160817/91a2cb1c-62eb-4a31-a1f6-3af8ab71782a/adi6 ...