龙龙送外卖

龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。

每到中午 12 点,帕特小区就进入了点餐高峰。一开始,只有一两个地方点外卖,龙龙简单就送好了;但随着大数据的分析,龙龙被派了更多的单子,也就送得越来越累……

看着一大堆订单,龙龙想知道,从外卖站出发,访问所有点了外卖的地方至少一次(这样才能把外卖送到)所需的最短路程的距离到底是多少?每次新增一个点外卖的地址,他就想估算一遍整体工作量,这样他就可以搞明白新增一个地址给他带来了多少负担。

输入格式:
输入第一行是两个数 N和M(2≤N≤105,1≤M≤105)N 和 M (2≤N≤10 5 , 1≤M≤10 5 )N和M(2≤N≤105,1≤M≤105),分别对应树上节点的个数(包括外卖站),以及新增的送餐地址的个数。

接下来首先是一行 NNN 个数,第 iii 个数表示第iii 个点的双亲节点的编号。节点编号从 111 到 NNN,外卖站的双亲编号定义为 −1−1−1。

接下来有MMM 行,每行给出一个新增的送餐地点的编号 Xi​X i ​Xi​ 。保证送餐地点中不会有外卖站,但地点有可能会重复。

为了方便计算,我们可以假设龙龙一开始一个地址的外卖都不用送,两个相邻的地点之间的路径长度统一设为 1,且从外卖站出发可以访问到所有地点。

注意:所有送餐地址可以按任意顺序访问,且完成送餐后无需返回外卖站。

输出格式:
对于每个新增的地点,在一行内输出题目需要求的最短路程的距离。

输入样例:

7 4
-1 1 1 1 2 2 3
5
6
2
4

输出样例:

2
4
4
6

解题思路:
dfs+贪心dfs + 贪心dfs+贪心
将每个路径都走两遍,最后减去最长的一个路径

#include <iostream>
#include <algorithm>
#include <set>
#include <queue>
#include <string>
#include <cstring>
#include <vector>
using namespace std;typedef pair<string,string> pss;
typedef pair<int,int> pii;const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10;
bool st[N];
int root, ans;
int p[N], d[N];
vector<int> v[N];void dfs(int pos)
{   if(st[pos] || pos == root) return ;st[pos] = true;ans += 2;dfs(p[pos]);
}
void init(int u, int dep) // 求出每个节点的深度,用来求最大路径
{for(auto it:v[u])init(it, dep + 1);d[u] = dep;
}
int main()
{   int n, m; cin >> n >> m;for(int i = 1; i <= n; i ++) {int x; cin >> x;if(x == -1){p[i] = i;root = i;continue;}p[i] = x;v[x].push_back(i);}init(root, 1);int maxdep = -1;while(m--){int x; cin >> x;if(st[x]) cout << ans - maxdep + 1 << endl;else{dfs(x);maxdep = max(maxdep,d[x]);cout << ans - maxdep + 1 << endl;}}
}

PTA L2-043 龙龙送外卖相关推荐

  1. PTA L2-043龙龙送外卖

    4.1.6 L2-043龙龙送外卖 题目地址:https://pintia.cn/problem-sets/994805046380707840/exam/problems/1518582482059 ...

  2. 浙大读博八年现靠送外卖赚钱,本人:进组以来博士无一人按时毕业

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 杨净 发自 凹非寺 量子位 | 公众号 QbitAI 浙大在读博士, ...

  3. 95后程序员月薪2万背着电脑送外卖,送单途中改Bug

    公众号关注 "视学算法" 设为 "星标",消息即可送达! 来源:云技术(ID:aiyunjishu) [#95后程序员背着电脑送外卖# 随时应对甲方临时需求] ...

  4. 送外卖最强的男人!!

    前几天朋友圈看见一张截图,截图是一个外卖小哥的求职简历,简历的工作描述十分引人注目. 很多人在朋友圈评论很好笑,而我却陷入了沉思. 在我心中,最强的男人要不是这样的 要不是这样的 而萌萌的外卖小哥怎么 ...

  5. 阿里程序员回老家被哥们问工作,回答在阿里,哥们却吐槽:破IT就破IT,还阿里巴巴!网友:京东就是送快递的,美团就是送外卖的!...

    请点击上面 一键关注! 大学生回老家最怕被问专业,如果你说学计算机,亲戚就会让你修电脑:如果你说学酒店管理,亲戚会以为你是服务员:如果你说学建筑,亲戚会说原来你是工地搬砖的-- 大学毕业参加工作后再回 ...

  6. 无人机送外卖已落地深圳,这体验有多爽?你根本想不到!

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 「天上掉馅饼」时代,已经来临! 作为领域里最饱受期待的场景之一 -- 无人机送外卖,已经率先在深圳启动. 美团,首次官宣即落地.截止6月,面 ...

  7. 美团北京,今日起无人驾驶送外卖

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自动驾驶落地,载物快于载人已是共识. 在这个领域,最具场景优势和最不容忽视的玩家--美团,最近就有一系列动向. 比如,刚融资100亿美元,用 ...

  8. 三个斯坦福华裔学生,送外卖成亿万富翁

    DoorDash创始人们 没想到,三位于"硅谷创业摇篮"--斯坦福大学毕业的华人学生,撑起了美国外卖半壁江山. 三人一夜之间也成为了亿万富翁,平均年龄竟还不到30岁. 01 美版美 ...

  9. Web前端工程师求职的失败——评《非你莫属》20120909期宋龙龙片段

    偶然看了<非你莫属>20120909期宋龙龙求职的视频片段(地址:http://v.youku.com/v_show/id_XNDQ4NTk5OTQw.html ).这位曾经为了考上清华大 ...

最新文章

  1. 南京晓庄学院计算机网络试卷,南京晓庄学院计算机网络8套卷(完整含答案).doc...
  2. 绘制ROC 曲线 计算 AUC PR曲线(精准率 召回率)示例
  3. 42、Power Query-Text.Remove函数应用
  4. 相亲对象能有多油腻......
  5. 蓝桥杯 数字三角形 贪心+动态规划
  6. OpenCV中文路径问题、matplotlib可视化中文乱码问题的解决办法
  7. python热部署_关于Spring Cloud 框架热部署的方法
  8. php csv linux,PHP处理CSV表格,用fgetcsv和fputcsv在数组和CSV间互转
  9. Spring Security入门(3-5)Spring Security 的鉴权 - 决策管理器和投票器
  10. 简单的字段类型定义(新新手看)
  11. 移远 EC20 模组(4G通信模组)转载
  12. 国科大学习资料--矩阵分析与应用(李保滨)--2015年期末考试试卷
  13. 通过easyexcel将文本文件转为excel xlsx文件
  14. 设置input框只能输入6位为数字的支付密码
  15. 学透JavaScript 你真的懂 Array 吗?
  16. 华为防火墙故障处理工具之查看路由表
  17. 生物老师(搞笑)鼻子和手
  18. 证明题 (转自和菜头)
  19. linux clk模型
  20. HTML中em标签的用法

热门文章

  1. 优盘连接时显示参数错误请问咋才能修复
  2. 动态规划之0-1背包问题(思路详解+表格演示过程+最优解打印方法+详细代码)
  3. windows使用模拟器
  4. 国网入职计算机考试题库,2019年国家电网入职考试题库.pdf
  5. GBase 8c 全局死锁解除
  6. 关于阿里云aca和acp哪个好?阿里云认证证书有含金量吗?
  7. 单片机与手机应用进行蓝牙通讯
  8. hdu 5234-三维背包
  9. STM32与ESP8266物联网编程
  10. php 用隐藏姓名第一个字,PHP用*号替代姓名除第一个字之外的字符