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

https://www.luogu.org/problemnew/show/P4408

sb题,但是我至今不知道为什么这张图就一定是棵树……这题意没说明白啊……

显然求直径,再求一点使得该点到直径两端的点的距离的最小值最大。

没有什么好方法,最后一个点只能暴力,所以我们预处理两端点到每个点的dis即可。

于是我们两遍bfs求直径,顺道就给做了就行。

(然后我不会bfs求直径,我只会dp求……)

#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll INF=1e18;
const int N=2e5+;
inline int read(){
int X=,w=;char ch=;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
struct node{
int to,nxt,w;
}e[N*];
int n,m,cnt,head[N];
ll dis[][N];
bool vis[N];
queue<int>q;
inline void add(int u,int v,int w){
e[++cnt].to=v;e[cnt].w=w;e[cnt].nxt=head[u];head[u]=cnt;
}
int bfs(int s,int on){
for(int i=;i<=n;i++)dis[on][i]=INF;
dis[on][s]=;vis[s]=;q.push(s);
while(!q.empty()){
int u=q.front();q.pop();
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to,w=e[i].w;
if(dis[on][v]>dis[on][u]+w){
dis[on][v]=dis[on][u]+w;
if(vis[v])continue;
vis[v]=;q.push(v);
}
}
vis[u]=;
}
ll maxn=;int id;
for(int i=;i<=n;i++){
if(maxn<dis[on][i]){
maxn=dis[on][i];id=i;
}
}
return id;
}
int main(){
n=read(),m=read();
for(int i=;i<=m;i++){
int u=read(),v=read(),w=read();
add(u,v,w);add(v,u,w);
}
int a,b;
a=bfs(,);b=bfs(a,);bfs(b,);
ll ans=;
for(int i=;i<=n;i++){
ans=max(ans,min(dis[][i],dis[][i]));
}
printf("%lld\n",ans+dis[][b]);
return ;
}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+

+++++++++++++++++++++++++++++++++++++++++++

最新文章

  1. SQL语句优化
  2. xargs的原理剖析及用法详解
  3. C# C++联调
  4. JS获取form表单的所有输入值
  5. WPF RoadMap
  6. iosanimationWithKeyPath
  7. oracle数据泵备份(Expdp命令)[转]
  8. cocos2dx Android 环境搭建 以及 ndk调试
  9. 推荐系统之基于二部图的个性化推荐系统原理及C++实现
  10. Android 百度地图 SDK v3.0.0 (一)
  11. Spark问题记录
  12. ECMAScript6之Array类型的扩展
  13. underScore学习1:匿名函数中call(this)的作用
  14. jquery让页面滚动条top,滚动条 顶部
  15. CP342-5做主站的profibus-dp组态应用
  16. 阿里云、腾讯云开通端口 telnet不通的原因
  17. SpriteBuilder中物理对象能否被缩放
  18. Java开源生鲜电商平台-搜索模块的设计与架构(源码可下载)
  19. 20155324《网络对抗技术》web安全基础实践
  20. JAVA并发包学习

热门文章

  1. linux下免安装版本mysql5.5 配置
  2. 函数返回const,以便控制访问
  3. android自动化のadb常用命令(不定期更新)
  4. 第五模块:WEB开发基础 第2章&#183;JavaScript基础
  5. 前端开发工程师 - 03.DOM编程艺术 - 期末考试
  6. PAT - L2-001. 紧急救援( Dijstra )
  7. jmeter链接数据库问题汇总
  8. day21 TFRecord格式转换MNIST并显示
  9. Ext JS 6学习文档-第4章-数据包
  10. C#调用mingw的so库时无法加载DLL###.so 找不到指定的模块