Two

思路:

  树形DP求直径;

  答案是边权总和*2-直径;

  dp[i][1]::以i为根的子树中最长的路径;

  dp[i][0]::以i为根的子树中次长的路径;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;#define maxn 100005int n,s,E[maxn<<1],V[maxn<<1],W[maxn<<1],cnt;
int head[maxn],dp[maxn][2],sum,ans=0;inline void in(int &now)
{char Cget=getchar();now=0;while(Cget>'9'||Cget<'0') Cget=getchar();while(Cget>='0'&&Cget<='9'){now=now*10+Cget-'0';Cget=getchar();}
}void dfs(int now,int fa)
{bool res=true;int pos=0,gs=0;for(int i=head[now];i;i=E[i]){if(V[i]==fa) continue;res=false,dfs(V[i],now);if(W[i]+dp[V[i]][0]>gs) gs=W[i]+dp[V[i]][0],pos=V[i];}if(res) return ;dp[now][0]=gs,gs=0;for(int i=head[now];i;i=E[i]){if(V[i]==fa||V[i]==pos) continue;if(W[i]+dp[V[i]][0]>gs) gs=W[i]+dp[V[i]][0];}dp[now][1]=gs,ans=max(ans,dp[now][1]+dp[now][0]);
}int main()
{in(n),in(s);int u,v,w;for(int i=1;i<n;i++){in(u),in(v),in(w),sum+=w*2;E[++cnt]=head[u],V[cnt]=v,W[cnt]=w,head[u]=cnt;E[++cnt]=head[v],V[cnt]=u,W[cnt]=w,head[v]=cnt;}dfs(s,0);cout<<sum-ans;return 0;
}

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6783168.html

AC日记——Two poj 1849相关推荐

  1. POJ 1849 Two(树的直径+思维)

    题目链接:http://poj.org/problem?id=1849        题意是有n个点,n-1条边(树形图),在s点放两个机器人,问这两个机器人遍历完所有的点的最少花费(不用回到原点). ...

  2. AC日记——传染病控制 洛谷 P1041

    传染病控制 思路: 题目想问的是: 有一棵树: 对于除1外每个深度可以剪掉一棵子树: 问最后剩下多少节点: 题目意思一简单,这个题立马就变水了: 搜索就能ac: 数据有为链的情况,按深度为层次搜索的话 ...

  3. AC日记——中位数 洛谷 P1168

    题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], -, A[2k - 1]的中位数.[color=red]即[/color] ...

  4. AC日记——约瑟夫问题 codevs 1282

    1282 约瑟夫问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果 题目描述 Description 有编号从1到N的N个小朋友在玩 ...

  5. POJ - 1849 Two(树的直径)

    题意: 给你N个结点的树,每条边的权值,以及一个起点位置S. 你有两个robot ,可以同时在树上跑.每跑过一条边就要花费一条边权值的油费(要重复i计算).现在你要把整棵树跑完,问至少要花费多少. 思 ...

  6. AC日记——逃出克隆岛 (bfs)

    2059 逃出克隆岛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述  Description oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜 ...

  7. AC日记——[Hnoi2017]影魔 bzoj 4826

    4826 思路: 主席树矩阵加减+单调栈预处理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 ...

  8. AC日记——小书童——刷题大军 洛谷 P1926

    题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生 ...

  9. AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203

    [HNOI2010]BOUNCE 弹飞绵羊 思路: SBlct: 代码: #include <bits/stdc++.h> using namespace std; #define max ...

最新文章

  1. 自定义mac的ll命令
  2. CGI方式获取RTX中用户的电话和邮箱
  3. JZOJ 5393. 【NOIP2017提高A组模拟10.5】Snake vs Block
  4. TCP queue 的一些问题
  5. 20220211-CTF-MISC-006-pure_color(stegsolve工具的使用)-007-Aesop_secret(AES解密)
  6. Microsoft宣布将停止支持多个 .NET Framework版本
  7. git常用命令,项目删除原有github连接并重新连接,回滚,下拉分支代码,切换分支
  8. SQL Server全局禁用及打开指定的跟踪标记
  9. SAP License:SAP评论
  10. (转) Dockerfile 中的 COPY 与 ADD 命令 1
  11. Android上的抓包工具 Packet Capture
  12. 模拟电子技术知识点总结
  13. c语言实数的输出和占位_C语言输出格式总结
  14. 发一套最完整的直升机原理(绝对完整,绝对精华)
  15. 计算机毕设(附源码)JAVA-SSM基于远程协作的汽车故障诊断系统
  16. pythonarray去除inf_Python中的inf与nan
  17. C++ 复数计算器 简单代码
  18. Excel教程:必会的大数据录入技巧|Excel入门
  19. 王者荣耀模型制作曝光
  20. Microsoft 解决方案框架版本 3.0 概述

热门文章

  1. git 克隆到指定分支
  2. SLAM总结(一)- SLAM原理概述与简介
  3. Linux迁移home目录到根目录的操作步骤
  4. poi读取excel表
  5. 关于Java字符串中拼接换行符
  6. 教你找到免费的Google Translate API(谷歌翻译接口)+C#版的Google翻译函数
  7. Windows运行Nacos
  8. 如何使用 JavaScript 制作待办事项列表
  9. mysql命令查看表内容
  10. WSUS服务器不能下载补丁的最终解决办法