本题就是从c到a/b再到b/a距离的最大值,显然,a和b分别是树的直径的两个端点,先用两次dfs求出树的直径,再用一次dfs求出每个点到a的距离,最后再用一次dfs求出每个点到距离它较近的a/b的距离,最后以每个节点为c枚举求最大距离即可。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 const int N=200100;
5 int n,m,x,y,z,tot,p,q,head[N];
6 ll ans,sum,dis[N];
7 int nxt[N<<1],to[N<<1],w[N<<1];
8
9 void add(int x,int y,int z){
10 nxt[++tot]=head[x];
11 head[x]=tot;
12 to[tot]=y;
13 w[tot]=z;
14 }
15
16 void dfs1(int u,int fa,ll s){
17 if(s>sum) sum=s,p=u;
18 for(int i=head[u];i;i=nxt[i]){
19 int v=to[i];
20 if(v==fa) continue;
21 dfs1(v,u,s+w[i]);
22 }
23 }
24
25 void dfs2(int u,int fa,ll s){
26 if(s>ans) ans=s,q=u;
27 for(int i=head[u];i;i=nxt[i]){
28 int v=to[i];
29 if(v==fa) continue;
30 dfs2(v,u,s+w[i]);
31 }
32 }
33
34 void dfs3(int u,int fa,ll s){
35 dis[u]=s;
36 for(int i=head[u];i;i=nxt[i]){
37 int v=to[i];
38 if(v==fa) continue;
39 dfs3(v,u,s+w[i]);
40 }
41 }
42
43 void dfs4(int u,int fa,ll s){
44 dis[u]=min(dis[u],s);//在到p的距离和到q的距离中选择更近的那一个
45 for(int i=head[u];i;i=nxt[i]){
46 int v=to[i];
47 if(v==fa) continue;
48 dfs4(v,u,s+w[i]);
49 }
50 }
51
52 int main(){
53 scanf("%d%d",&n,&m);
54 for(int i=1;i<=m;i++){
55 scanf("%d%d%d",&x,&y,&z);
56 add(x,y,z);add(y,x,z);
57
58 }
59 dfs1(1,0,0);//求直径的一个端点p
60 dfs2(p,0,0);//求直径的另一端点q,和直径长度ans
61 dfs3(p,0,0);//枚举每个点到p的距离
62 dfs4(q,0,0);//枚举每个点到q的距离
63 sum=0;
64 for(int i=1;i<=n;i++)
65 sum=max(sum,dis[i]);
66 printf("%lld\n",sum+ans);
67 return 0;
68 }

洛谷P4408 [NOI2003] 逃学的小孩 (树的直径)的更多相关文章

  1. 洛谷 P4408 [NOI2003]逃学的小孩

    题目传送门 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚, ...

  2. 洛谷 P4408 [NOI2003] 逃学的小孩 题解

    Analysis 题意虽然说先去谁家再去谁家,但是我们不需要管这个,因为AA.BB.CC三个点我们可以任意互相交换它们所代表的对象,所以题目要求的就是在一棵树上找到3个点AA.BB.CC令AB+BCA ...

  3. BZOJ1509: [NOI2003]逃学的小孩(树的直径)

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1126  Solved: 567[Submit][Status][Discuss] Description ...

  4. LUOGU P4408 [NOI2003]逃学的小孩(树的直径)

    题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽 ...

  5. BZOJ1509 [NOI2003]逃学的小孩 树型DP

    题目: 分析: 首先明确我们是要求 min(dist[C][A],dist[C][B])+dist[A][B]. 我们把C当成树根,第一我们可以发现min里面取dist[C][A]或者dist[C][ ...

  6. luogu P4408 [NOI2003]逃学的小孩

    题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一听说要考试,Chris的父母就心 ...

  7. 【洛谷 P3629】 [APIO2010]巡逻 (树的直径)

    题目链接 容易发现,当加一条边时,树上会形成一个环,这个环上的每个点都是只要走一次的,也就是说我们的答案减少了这个环上点的个数,要使答案最小,即要使环上的点最多,求出直径\(L\),则答案为\(2(n ...

  8. BZOJ 1509 逃学的小孩(树的直径)

    题意:从树上任找三点u,v,w.使得dis(u,v)+min(dis(u,w),dis(v,w))最大. 有一个结论u,v必是树上直径的两端点. 剩下的枚举w就行了. 具体不会证... # inclu ...

  9. 洛谷 P4408 逃学的小孩 解题报告

    P4408 [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?&q ...

随机推荐

  1. Pandas简单操作(学习总结)

    Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),是一个提供高性能.易于使用的数据结构和数据分析工具. 接下来查看Pandas的基本使用: # 导入模块 i ...

  2. 使用云服务器从0开始搭建云端Jupyter Lab|Notebook

    0.购买云服务器 购买服务器我只推荐硅云,因为香港服务器免备案!而且25岁以下仅需10元每月,至少可买3年!每年享有多次原价续费机会,可补价升级配置. 硅云服务器首页:https://www.vpso ...

  3. kali的安装与配置

    VMware虚拟机与kali下载及安装教程 进入官网https://www.kali.org/get-kali/#kali-platforms 安装kali镜像 需要安装虚拟机 这里我们选择安装VMw ...

  4. 正则表达式实战:最新豆瓣top250爬虫超详细教程

    检查网页源代码 首先让我们来检查豆瓣top250的源代码,一切网页爬虫都需要从这里开始.F12打开开发者模式,在元素(element)页面通过Ctrl+F直接搜索你想要爬取的内容,然后就可以开始编写正 ...

  5. LuoguP3690 【模板】Link Cut Tree (LCT)

    勉强算是结了个大坑吧或者才开始 #include <cstdio> #include <iostream> #include <cstring> #include ...

  6. Luogu2290 [HNOI2004]树的计数 (组合计数,prufer编码)

    这不prufer编码吗,防爆long long就行了啊 #include <iostream> #include <cstdio> #include <cstring&g ...

  7. 【游记】CSP 2021 J2

    这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...

  8. 聊天机器人框架Rasa资源整理

      Rasa是一个主流的构建对话机器人的开源框架,它的优点是几乎覆盖了对话系统的所有功能,并且每个模块都有很好的可扩展性.参考文献收集了一些Rasa相关的开源项目和优质文章. 一.Rasa介绍 1.R ...

  9. python使用pickle序列化对象读取输出二进制文件

    import pickle class tick: name = '牛牛牛' age = 10 samp = [1,2,3,'aaa',[12,3],tick()] with open('te.xxx ...

  10. 可别小看了XSS漏洞

    可别小看了XSS漏洞 ​ 对于初了解xss漏洞的人来说,XSS漏洞的危害就是获取受害者的cookie,来进行 'cookie劫持'. ​ 今天就总结一下XSS漏洞的危害性,望安全人员不要轻视,开发人员 ...