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\)最近学习了一些图论知识.根据课本,有如下定义. 树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一 ...
随机推荐
- bzoj2251 [2010Beijing Wc]外星联络
因为n很小,所以对于串s的每一个后缀,都把其加入字典树中,并且经过一个字典树节点,该节点权值就+1. 输出时因为要字典序最小,所以字典树先走0分叉,再走1分叉,如果节点权值大于等于2就输出 代码 #i ...
- 解决MyEclipse报错问题
转载文章. 做NC的时候从别人那拷了个NC_DEMO结果我这报错他那没报错 import nc.bs.wfengine.engine.ext.TaskTopicResolver; 报错信息:A ...
- 在Repeater中嵌套使用Repeater
在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品.最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加 ...
- js 父窗体
1.关闭 父窗体 window.opener.opener=null;window.opener.close() 2.刷新父窗体 JS刷新父窗口的几种方式 浮层内嵌iframe及frame集合窗 ...
- 关于C#中的new的用法
修饰符:隐藏基类中的成员(是基类中的成员,所以字段.属性.事件等等都可以隐藏,不单单是方法哦) public class Car { public void WriteName(string name ...
- POJ3420Quad Tiling(矩阵快速幂)
Quad Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3740 Accepted: 1684 Descripti ...
- Mac平台上OpenCV开发环境搭建
转载于:https://segmentfault.com/a/1190000000711132 linux 编译指定库.头文件的路径问题 http://blog.csdn.net/jiaweizou/ ...
- 升级PHP
wget http://down.wdlinux.cn/in/php_up53.shsh php_up53.sh
- 【Android】解析Json数据
Json数据:"{\"UserID\":\"Allen\",\"Dep\":IT,\"QQ\":\" ...
- 解决Jenkins console输出乱码
背景 Jenkins console输出乱码,如 ������������� 1 解决办法 Jenkins Master 设置utf8 encoding Tomcat 启动脚本 export JAVA ...