求树的直径要先bfs找到任意起点能走到的最远的点,然后再以找到的点为起点bfs。
本题要求两点遍历树,实际是求两倍权和-树的直径,证明不缀。

//注意拓展点的循环的条件是i != -1还是i != 0.
#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 100010;
int n, s, tot, end;
int sum;
int st[maxn], d[maxn], vis[maxn];struct node{int to, w, next;
} edge[2*maxn];void in(int u, int v, int w){edge[++tot].to = v;edge[tot].w = w;edge[tot].next = st[u];st[u] = tot;
}int bfs(int start){memset(vis, 0, sizeof(vis));d[start] = 0;int diameter = 0;queue<int> q;q.push(start);vis[start] = 1;while(!q.empty()){int u = q.front();q.pop();for(int i = st[u]; i != 0; i = edge[i].next){int v = edge[i].to;if(!vis[v]){d[v] = d[u] + edge[i].w;if(d[v] > diameter){diameter = d[v];end = v;}vis[v] = 1;q.push(v);}}}return diameter;
}int main(){cin >> n >> s;for(int i = 1, u, v, w; i <= n-1; i++){cin >> u >> v >> w;sum += w*2;in(u, v, w);in(v, u, w);}end = s;bfs(s);int dia = bfs(end);cout << sum - dia << endl;return 0;
} 

POJ 1849 Two相关推荐

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

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

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

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

  3. AC日记——Two poj 1849

    Two 思路: 树形DP求直径: 答案是边权总和*2-直径: dp[i][1]::以i为根的子树中最长的路径: dp[i][0]::以i为根的子树中次长的路径: 来,上代码: #include < ...

  4. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  5. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  6. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  7. poj 2559 Largest Rectangle in a Histogram 栈

    // poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...

  8. POJ 2528 Mayor's posters(线段树)

    题目大意 贴海报.每张海报的高度都是一样的,唯独宽度不一样.每张海报只能占用整数倍的单位线段长度,贴了 n(n<=10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)? ...

  9. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)

    题目链接 题目一看就是最小点覆盖,这道题与POJ - 3041 算是一类题,但是3041算是一道十分裸的,因为删除的是整行或者整列,所以图其实是现成的,但是本题的难点就在如何建图. 思路:首先还是尽量 ...

最新文章

  1. intellij idea不显示git push按钮的解决办法
  2. java线程的创建和启动深度解析
  3. BLE 配对流程(转自襄坤在线)
  4. 微软Vista今起大幅降价 最高幅度达到千元
  5. JS 点击复制Copy插件--Zero Clipboard
  6. js webpack 配置路径_Vue.js学习No.5(WebPack配置二)
  7. 部署单台zookeeper
  8. MATLAB DBSCAB简介
  9. spring boot 请求转发和重定向
  10. 本质与现象:本质与现象
  11. CSDN第一节课总结
  12. 3-1 列表的基本操作
  13. 模拟网络延迟抖动测试
  14. flutter之从零开始搭建(三)之 网络请求
  15. 【docker-ce】k8s集群docker容器异常重启问题分析
  16. Pytorch框架学习记录10——线性层
  17. vs2015智能提示英文改为中文
  18. MySQL DQL操作之基础查询
  19. 【技术方案】如何基于高清摄像头设备,搭建慢直播平台?
  20. 笔记本html到电视,笔记本怎么连接液晶电视 笔记本连接液晶电视方法【详解】...

热门文章

  1. IOCP之accept、AcceptEx、WSAAccept的区别 .
  2. 拓嘉辰丰电商:拼多多店铺做不起来的原因
  3. python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
  4. 拿到软考高级证书就是高级职称了吗?
  5. 《计算机操作系统(计算机)》
  6. oracle删除字段约束条件,Oracle 数据库中关于对表字段约束的操作(设置、删除、查询)...
  7. 解决项目Unable to find GatewayFilterFactory with name CacheRequestFilter错误
  8. 使用python判断一个数是否为素数
  9. c语言lnk1120,C致命错误LNK1120:1未解决的外部
  10. .pdm文件怎么打开