1509: [NOI2003]逃学的小孩

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 995  Solved: 505
[Submit][Status][Discuss]

Description

Input

第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数。以下M行,每行给出一条街道的信息。第i+1行包含整数Ui、Vi、Ti(1Ui, Vi  N,1  Ti  1000000000),表示街道i连接居住点Ui和Vi,并且经过街道i需花费Ti分钟。街道信息不会重复给出。

Output

仅包含整数T,即最坏情况下Chris的父母需要花费T分钟才能找到Chris。

Sample Input

4 3
1 2 1
2 3 1
3 4 1

Sample Output

4
 

题解:

这道题目只能讲这个很关键,所以记录第二长的边乘以两倍,就OK了

什么树形dp,没有的。

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #define N 200007
  7. #define ll long long
  8. using namespace std;
  9.  
  10. int n,m;ll ans;
  11. int cnt,head[N],next[N*],rea[N*];ll val[N*];
  12. bool boo[N];
  13. struct Node
  14. {
  15. int pos;ll dis;
  16. }a[N][];
  17.  
  18. bool cmp(Node x,Node y){return x.dis>y.dis;}
  19. void add(int u,int v,int fee){next[++cnt]=head[u],head[u]=cnt,rea[cnt]=v,val[cnt]=fee;}
  20. void dfs_init(int u,int fa)
  21. {
  22. for (int i=head[u];i!=-;i=next[i])
  23. {
  24. int v=rea[i],fee=val[i];
  25. if (v==fa) continue;
  26. dfs_init(v,u);
  27. a[u][].pos=v;
  28. a[u][].dis=a[v][].dis+fee;
  29. sort(a[u]+,a[u]++,cmp);
  30. }
  31. ans=max(ans,a[u][].dis+*a[u][].dis+a[u][].dis);
  32. }
  33. void dfs_solve(int u)
  34. {
  35. boo[u]=;
  36. for (int i=head[u];i!=-;i=next[i])
  37. {
  38. int v=rea[i],fee=val[i];
  39. if (boo[v])
  40. {
  41. if (a[v][].pos!=u) a[u][].dis=a[v][].dis+fee;
  42. else a[u][].dis=a[v][].dis+fee;
  43. a[u][].pos=v;
  44. sort(a[u]+,a[u]++,cmp);
  45. break;
  46. }
  47. }
  48. ans=max(ans,a[u][].dis+*a[u][].dis+a[u][].dis);
  49. for (int i=head[u];i!=-;i=next[i])
  50. {
  51. int v=rea[i];
  52. if (!boo[v]) dfs_solve(v);
  53. }
  54. }
  55. int main()
  56. {
  57. memset(head,-,sizeof(head));
  58. scanf("%d%d",&n,&m);
  59. int x,y,z;
  60. for (int i=;i<=m;i++)
  61. {
  62. scanf("%d%d%d",&x,&y,&z);
  63. add(x,y,z),add(y,x,z);
  64. }
  65. dfs_init(,-);
  66. dfs_solve();
  67. printf("%lld\n",ans);
  68. }

BZOJ 1509[NOI 2003]逃学的小孩 树形dp的更多相关文章

  1. BZOJ 1509: [NOI2003]逃学的小孩( 树形dp )

    树形dp求出某个点的最长3条链a,b,c(a>=b>=c), 然后以这个点为交点的最优解一定是a+2b+c.好像还有一种做法是求出树的直径然后乱搞... ----------------- ...

  2. NOI 2003 逃学的小孩 (树的直径)

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

  3. [NOI 2003] 逃学的小孩

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1509 [算法] 树的直径 [代码] #include<bits/stdc++. ...

  4. BZOJ1509: [NOI2003]逃学的小孩 (树形DP)

    题意:给一棵树 选三个点A,B,C 求A到B的再从B到C的距离最大值 需要满足AB的距离小于AC的距离 题解:首先树上的最大距离就想到了直径 但是被样例误导了TAT BC两点构成了直径 我一开始以为A ...

  5. 逃学的小孩,树形dp

    先找到题 题意: 中文题,没什么好解释的,也没什么歧义. 分析: 首先我们想一下他的路径将会是怎样的:A-B-C/A-C-B,其实就是求一下min(AB+BC,AC+BC),ABC任选.挺简单,首先证 ...

  6. [BZOJ 1907] 树的路径覆盖 【树形DP】

    题目链接:BZOJ - 1907 题目分析 使用树形 DP,f[x][0] 表示以 x 为根的子树不能与 x 的父亲连接的最小路径数(即 x 是一个折线的拐点). f[x][1] 表示以 x 为根的子 ...

  7. bzoj 4871: [Shoi2017]摧毁“树状图” [树形DP]

    4871: [Shoi2017]摧毁"树状图" 题意:一颗无向树,选两条边不重复的路径,删去选择的点和路径剩下一些cc,求最多cc数. update 5.1 : 刚刚发现bzoj上 ...

  8. BZOJ.4199.[NOI2015]品酒大会(后缀自动机 树形DP)

    BZOJ 洛谷 后缀数组做法. 洛谷上SAM比SA慢...BZOJ SAM却能快近一倍... 只考虑求极长相同子串,即所有后缀之间的LCP. 而后缀的LCP在后缀树的LCA处.同差异这道题,在每个点处 ...

  9. BZOJ.3611.[HEOI2014]大工程(虚树 树形DP)

    题目链接 要求的和.最大值.最小值好像都可以通过O(n)的树形DP做,总询问点数<=2n. 于是建虚树就可以了.具体DP见DP()函数,维护三个值sum[],mx[],mn[]. sum[]要开 ...

随机推荐

  1. java学习第二章

  2. 解决vue跨域问题

    package com.qmtt.config; import java.io.IOException; import javax.servlet.Filter; import javax.servl ...

  3. 分布式数据存储 之 Redis(一) —— 初识Redis

    分布式数据存储 之 Redis(一) -- 初识Redis 为什么要学习并运用Redis?Redis有什么好处?我们步入Redis的海洋,初识Redis. 一.Redis是什么 ​ Redis 是一个 ...

  4. hihocoder1744 hohahola

    思路: 二分. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = ...

  5. 洛谷P2762 太空飞行计划问题(最大权闭合图)

    题意 有$m$个实验,$n$中器材,每个实验需要使用一些器材 每个实验有收入,每个器材有花费 最大化收入 - 花费 Sol 最大权闭合图的经典应用 从$S$向每个实验连流量为该实验收入的边 从每个器材 ...

  6. XDroidMvp 轻量级的Android MVP快速开发框架

    XDroidMvp是XDroidAndroid快速开发框架的MVP版本,其使用方式类似于XDroid,大部分源码也来自XDroid. XDroidMvp主要会有这些特性: 无需写Contract! 无 ...

  7. 重新部署mysql遇到的问题

    Windows 2008 Server R2 MySql: 5.7 下载Mysql. 配置mysql环境变量 注册mysql服务.(mysqld install) 移除注册,sc delete mys ...

  8. Java子类与父类方法的隐藏和覆盖

    class Base{     int x = 1;     static int y = 2;     String name(){         return "mother" ...

  9. 使用Jenkins进行android项目的自动构建(6)

    之前已经介绍过使用Maven做构建,在来介绍一下Gralde的自动化构建. 什么是Gralde?官方的解释是 Gradle is an open source build automation sys ...

  10. Javaweb学习笔记4—Reuest&Response

    今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣 ...