【牛客 - 188C】水图(bfs树的直径,思维)
题干:
链接:https://ac.nowcoder.com/acm/contest/188/C
来源:牛客网
小w不会离散数学,所以她van的图论游戏是送分的
小w有一张n个点n-1条边的无向联通图,每个点编号为1~n,每条边都有一个长度
小w现在在点x上
她想知道从点x出发经过每个点至少一次,最少需要走多少路
输入描述:
第一行两个整数 n,x,代表点数,和小w所处的位置 第二到第n行,每行三个整数 u,v,w,表示u和v之间有一条长为w的道路
输出描述:
一个数表示答案
示例1
输入
复制
3 1 1 2 1 2 3 1
输出
复制
2
备注:
1 ≤ n ≤ 50000 , 1 ≤ w ≤ 2147483647
解题报告:
和 牛客369的C一样的思维。
AC代码:
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#define ll long long
using namespace std;
const int MAX = 6e5 + 5 ;
const int INF = 0x3f3f3f3f;
struct Node {int to;int w;int ne;
} e[MAX];
struct point {int pos,c;point(){}point(int pos,int c):pos(pos),c(c){}};
int n;
int head[MAX];
int cnt = 0 ;
bool vis[MAX];
void init() {cnt = 0;memset(head,-1,sizeof(head));
}
void add(int u,int v,int w) {e[cnt].to = v;e[cnt].w = w;e[cnt].ne = head[u];head[u] = cnt;cnt++;
} int bfs(int x,int &w) {queue <point> q;int maxx = 0;int retp = x ;//返回的点坐标 memset(vis,0,sizeof(vis) );q.push(point(x,0));vis[x] = 1;point now;while(q.size() ) {point cur = q.front();q.pop();for(int i = head[cur.pos]; i!=-1; i=e[i].ne) {if(vis[e[i].to]) continue;vis[e[i].to] = 1;now.pos = e[i].to;now.c = cur.c + e[i].w;if(now.c>maxx) {maxx = now.c;retp = now.pos;}q.push(now);}//w = maxx;}w = maxx;return retp;
}
int main()
{int x;cin>>n>>x;init();int u,v,w;ll sum = 0;for(int i = 1; i<=n-1; i++) {scanf("%d%d%d",&u,&v,&w);add(u,v,w);add(v,u,w);sum += w;}int ans1 = 0,ans2 = 0;u = bfs(x,ans1);//printf("ans2 = %d\n",ans2);printf("%lld\n",1LL*ans1 + (sum-ans1)*2);return 0 ;
}
【牛客 - 188C】水图(bfs树的直径,思维)相关推荐
- 牛客 Cutting Bamboos (主席树)
题解 - 牛客 Cutting Bamboos (主席树) 题目链接: https://ac.nowcoder.com/acm/contest/889/H 题意: 给你一些竹子,q个询问,问你从第l到 ...
- 【牛客 - 369C】小A与欧拉路(bfs树的直径)
题干: 链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边 ...
- 【牛客 - 157D】插排树(dfs,树形dp)
题干: 链接:https://ac.nowcoder.com/acm/contest/157/D 来源:牛客网 一年一度的山东省oi夏令营又开始了,每到这个季节,山东的oier们都会欢聚这里,一起学( ...
- 牛客 - 阔力梯的树(树上启发式合并)
题目链接:点击查看 题目大意:给出一棵树,每个节点都有一个编号,现在规定每个节点的"结实程度"为其子树中所有的编号排序后相邻两个数之差的平方和,现在需要求出每个节点的"结 ...
- 牛客练习赛52.Galahad(树状数组维护区间不相同数的和)
链接:https://ac.nowcoder.com/acm/contest/1084/B 来源:牛客网 Galahad 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K ...
- 牛客网 水题 递推找规律
链接: https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 小Y买了很多苹果,但他很贪吃,过了几天一下就吃剩一只了.每一天小Y会数出自己的苹果个数X,如果 ...
- 牛客练习赛52 B.Galahad (树状数组)
B.Galahad 链接:https://ac.nowcoder.com/acm/contest/1084/B 来源:牛客网 题目描述 魔女要测试骑士的能力,要求他维护一个长度为 的序列,每次要询问一 ...
- 【牛客 - 373C】抓捕盗窃犯(连通图,思维,dfs 或 并查集)
题干: 链接:https://ac.nowcoder.com/acm/contest/373/C 来源:牛客网 Q市发生了一起特大盗窃案.这起盗窃案是由多名盗窃犯联合实施的,你要做的就是尽可能多的抓捕 ...
- nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)
链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...
最新文章
- java如何被调用_java – 如何知道Parse.initialize()是否已被调用?
- 安装nvidia-docker2
- java(8)——和、|和||、!、^及三目运算符
- 8758:2的幂次方表示
- STM32F407的硬件I2C
- C#中5步完成word文档打印的方法
- matlab jp2格式,JP2文件扩展名_JP2是什么格式_JP2文件怎么打开-文件百科
- linux网络服务之dns
- mie散射理论方程_电磁散射工程应用基础
- 只安装python能干什么_你都用 Python 来做什么?
- 【操作系统】进程通信-思维导图
- andriod socket开发问题小结
- PASCAL VOC2012数据集的下载及简单讲解
- centos安装jetbrains projector(解决不能复制问题)
- hadoop系列三:mapreduce的使用(一)
- 如何做一个简单的XX(学生/图书馆)管理系统(一)
- 唐彬森:元气森林未被解读的“长期主义”
- 2020年中国地理信息产业现状分析,发展前景广阔「图」
- 怎么让手机和电脑处于一个局域网 电脑本机发布的项目(非阿里云发布),怎么让手机也可以访问电脑发布的项目
- 计算机网络物联网专业课程,物联网工程专业课程
热门文章
- C++异常之异常说明
- canvas绘制图像image
- Codeforces Round #736 (Div. 2)(B-C)
- 计算机应用基础试模块5ACCSE,2015年计算机二级《Access》上机最后冲刺卷(1)
- 电力电子技术 matlab仿真指导,在_电力电子技术_课程教学中展开Matlab仿真训练_唐贤伦...
- php中的解析范围符,如何合理使用php7范围解析操作符
- python多线程logger_python多线程logger_Dblogger:一个Python语言实现支持多进程和多线程日志打印高效Python日志库......
- python socket send_python socket 连续send,出现粘包问题
- 基于python的个人博客系统的设计开题报告_个人博客设计实现开题报告
- reactor设计模式 1