描述

车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛。
赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树)。每个计时点的高度都不相同(父结点的高度必然大于子结点),相邻计时点间由赛道相连。由于马力不够,所以韵韵的遥控车只能从高处驶向低处。而且韵韵的车跑完每条赛道都需花费一定的时间。
举办方共拟举办m个赛段的比赛,每次从第u个计时点到第v个计时点,当然其中有不少比赛韵韵的遥控车是不能参加的(因为要上坡)。平平想知道他能参加多少个赛段的比赛,并且想知道他完成这些赛段的总用时。
赛道皆为单向。

输入格式

第一行两个整数n,m。
接下来n-1行每行3个整数a、b、t。
表示韵韵的遥控车可以花t秒从第a个计时点到第b个计时点。
接下来m行每行2个整数u、v,意义如描述所示。

输出格式

第一行输出一个正整数,表示能参加的赛段数。
第二行输出一个正整数,表示总用时。

样例输入1

6 2
1 2 1
2 4 1
2 5 1
5 6 1
1 3 1
2 6
4 5

样例输出1

1
2

限制

各个测试点1s
提示
第一个计时点的高度是最高的;
u≠v;
对于50%的数据 n≤1000 m≤1000;
对于100%的数据 n≤10000 m≤100000;
答案小于2^64。

来源

f1zsy birdor

思路

考试的时候看到这题是懵逼的

后来仔细一想水了一个n次判断的spfa,50分到手
后来又仔细一想,这似乎是求两点最近公共祖先,如下:

  • 如果能从一点出发到达另一点,那么这两点分别为处在同一树枝上的不同节点,且出发点深度<终点深度
  • 画个图看看可以发现,上面那段话==出发点为所求两点的祖先

    距离呢?距离怎么算?
    还是如下两种方法:

    1. 做之前dfs一下路径和代价求得dis[x],表示从根节点1到x节点的距离
    2. 做tarjan的时候逐步累积当前访问过的节点到根节点的距离,同记为dis[x]
    3. 最后x到y节点的距离=abs(dis[x]-dis[y])-dis[最近公共祖先]
    4. 我们发现由于两点能连通的条件仅限于他们处在同一树枝上,所以dis[最近公共祖先]是个大酱油

    于是就在网上搜资料、找解题报告、手鲁题……
    于是我们就能发现这是一道模板水题
    于是我们就有了以下乱搞

乱搞的后果和产物:

typeedge=recordx,y,w,next:longint;end;
varn,m,maxE,maxQ:longint;f,ls,ls1,dis:array[1..110000]of longint;v:array[1..110000]of boolean;e,q:array[1..110000]of edge;dist,ans:int64;
procedure add(x,y,w:longint);
begininc(maxE);e[maxE].x:=x;e[maxE].y:=y;e[maxE].w:=w;e[maxE].next:=ls[x];ls[x]:=maxE;
end;
procedure addq(x,y:Longint);
begininc(maxQ);Q[maxQ].x:=x;Q[maxQ].y:=y;Q[maxQ].next:=ls1[x];ls1[x]:=maxQ;
end;
function find(x:longint):longint;
beginif (x=f[x]) thenexit(x);find:=find(f[x]);f[x]:=find;
end;
procedure union(x,y:longint);
vara,b:Longint;
begina:=find(x);b:=find(y);f[a]:=b;
end;
procedure dfs(dep,k:longint);
vari:longint;
begindis[dep]:=k;v[dep]:=true;i:=ls[dep];while (i>0) dowith e[i] dobegindfs(y,k+w);union(y,dep);i:=next;end;i:=ls1[dep];while i>0 dowith q[i] dobeginif v[y] thenif find(y)=x thenbegininc(ans);dist:=dist+dis[y]-dis[x];end;i:=next;end;
end;
procedure init;
vari,j,x,y,w:longint;
beginmaxE:=0;ans:=0;dist:=0;fillchar(ls,sizeof(ls),0);readln(n,m);for i:=1 to n-1 dobeginreadln(x,y,w);add(x,y,w);end;for j:=1 to m dobeginreadln(x,y);addq(x,y);end;for i:=1 to n do f[i]:=i;dfs(1,0);writeln(ans);writeln(dist);
end;
begininit;
end.

拉力赛_vijos1460_LCA相关推荐

  1. 拉力赛 (Standard IO)

    题意/Description: 车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛. 赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树).每个计时点的高度都不相同(父结 ...

  2. vijos p1460——拉力赛

    描述 车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛. 赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树).每个计时点的高度都不相同(父结点的高度必然大于子结点), ...

  3. [BZOJ 4244] 邮戳拉力赛

    BZOJ传送门 Description IOI铁路是由N+2N+2N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+10...N+10...N+1. 这条路线上行驶的电 ...

  4. bzoj4244: 邮戳拉力赛 dp

    Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶 ...

  5. [BZOJ4244]邮戳拉力赛

    Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶 ...

  6. 【BZOJ4244】邮戳拉力赛 DP

    [BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...

  7. 经纬恒润受邀出席首届中国汽车芯片应用创新拉力赛新闻发布会

    经纬恒润受邀出席首届中国汽车芯片应用创新拉力赛新闻发布会 10月17日,芯耀亦城·首届中国汽车芯片应用创新拉力赛(简称"创新拉力赛")新闻发布会暨技术沙龙活动在北京亦庄顺利召开. ...

  8. 电单车拉力赛的调试情况汇集

    ▌谁强谁就是规则制定者 ▌ 卓大大,请问 1,单车组是没有环岛和三叉,但有坡道和十字吗 2,电磁线是折线的话对角度和长度有限制吗?3. 是否有直角,我记得我在哪看的不超过120度来着? ▲ 同学调试电 ...

  9. BZOJ 4244 邮戳拉力赛 (DP)

    手动博客搬家: 本文发表于20181211 18:01:21, 原地址https://blog.csdn.net/suncongbo/article/details/84957907 为了防止我的博客 ...

最新文章

  1. 机器学习:计算学习理论
  2. 深入浅析mysql引擎
  3. LeetCode 25K 个一组翻转链表26删除排序数组中的重复项
  4. 使用zipKin构建NetCore分布式链路跟踪
  5. 【小虫虫】邮购笔记本的注意事项
  6. python语言中包含的标准数据类型_Python对象——标准类型的分类
  7. android 远程桌面连接闪退,远程桌面一点连接就闪退,不能弹出输入账号密码窗口...
  8. mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信
  9. access没有使用 对象的必要权限_厨房有没有必要安燃气报警器 使用燃气要注意哪些安全性措施...
  10. 【报告分享】2020年抖音美妆直播报告.pdf(附下载链接)
  11. HDU 4607 Park Visit(树的直径)
  12. html 空间扭曲效果,3DS MAX空间扭曲工具基础教程
  13. 深度神经网络训练过程中为什么验证集上波动很大_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...
  14. Oracle 新建用户、赋予权限
  15. 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!...
  16. android手机投影到电视软件下载,安卓手机怎么投屏到电视?这两种方法最简单!...
  17. 大学生性价比计算机推荐,2018大学生笔记本推荐_良心笔记本推荐【性价比之王】-太平洋电脑网...
  18. 2. 贯穿软件开发生命周期的测试
  19. Xposed学习笔记之蚂蚁森林能量自动收取模块
  20. ios中的KVC和KVO

热门文章

  1. c语言fortify扫描报告,fortify代码扫描问题结果分析
  2. (JavaIO编程案例)投票选举
  3. 通达信财务函数与股票公式进阶篇[转]
  4. Dynatrace分布式跟踪之Alibaba Dubbo
  5. 【每日新闻】2019年VR/AR十大预测来了!
  6. 服务器插上内存卡就没有显示,相机内存卡读不出来该怎么解决?
  7. 怎么看显存及显卡型号
  8. 论文生成器python_一本道生成器Python版,笑喷了
  9. 「硬见小百科」什么是自举电路
  10. 【ORACLE 】ORACLE OCP 071考点记录01