描述

车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛。

赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树)。每个计时点的高度都不相同(父结点的高度必然大于子结点),相邻计时点间由赛道相连。由于马力不够,所以韵韵的遥控车只能从高处驶向低处。而且韵韵的车跑完每条赛道都需花费一定的时间。

举办方共拟举办m个赛段的比赛,每次从第u个计时点到第v个计时点,当然其中有不少比赛韵韵的遥控车是不能参加的(因为要上坡)。平平想知道他能参加多少个赛段的比赛,并且想知道他完成这些赛段的总用时。

赛道皆为单向。

格式

输入格式

第一行两个整数n,m。

接下来n-1行每行3个整数a、b、t。

表示韵韵的遥控车可以花t秒从第a个计时点到第b个计时点。

接下来m行每行2个整数u、v,意义如描述所示。

输出格式

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

第二行输出一个正整数,表示总用时。

样例1

样例输入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。

LCA,只用记录下deep就可以了,LCA判断x和y的公共祖先是否为x或y若是的话加上时间即可。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 const int maxn=10005;
 7 int fa[maxn][20],deep[maxn];
 8 int head[maxn],nextn[maxn],tov[maxn],w[maxn];
 9 int pd[maxn];
10 int n,m,tot;int d[maxn];
11 long long t,ans;
12 void go(int x,int y,int z)
13 {
14     tot++;
15     nextn[tot]=head[x];
16     head[x]=tot;
17     tov[tot]=y;
18     w[tot]=z;
19 }
20
21 void dfs(int x)
22 {
23     int v=head[x];
24     while(v)
25     {
26         if(pd[tov[v]]==false)
27         {
28             fa[tov[v]][0]=x;
29             deep[tov[v]]=deep[x]+1;
30             d[tov[v]]=d[x]+w[v];
31             pd[tov[v]]=true;
32             int ii=0,pos=x;
33             while(fa[pos][ii])
34             {
35                 fa[tov[v]][ii+1]=fa[pos][ii];
36                 pos=fa[pos][ii];
37                 ii++;
38             }
39             dfs(tov[v]);
40         }
41         v=nextn[v];
42     }
43 }
44 void lca(int x,int y)
45 {
46     if(deep[x]>deep[y])return ;
47     int m=deep[y]-deep[x];
48     int ii=0;
49     int k=y;
50     while(m)
51     {
52         if(m&1)y=fa[y][ii];
53         m=(m>>1);
54         ii++;
55     }
56     if(x!=y)return ;
57     ans++;
58     t+=d[k]-d[x];
59 }
60 int main()
61 {
62     scanf("%d%d",&n,&m);
63     for(int i=1;i<=n-1;i++)
64     {
65         int x,y,z;
66         scanf("%d%d%d",&x,&y,&z);
67         go(x,y,z);
68     }
69     deep[1]=1;pd[1]=true;
70     dfs(1);
71     for(int i=1;i<=m;i++)
72     {
73         int x,y;
74         scanf("%d%d",&x,&y);
75         lca(x,y);
76     }
77     printf("%I64d\n",ans);
78     printf("%I64d\n",t);
79     return 0;
80 }

转载于:https://www.cnblogs.com/937337156Zhang/p/6052410.html

vijos p1460——拉力赛相关推荐

  1. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

  2. vijos 1476 旅游规划题解

    题目链接:https://vijos.org/p/1476 解:因为这一定是一棵树,所以我们多画几次图,就会发现所有的最长路径中心点都一样,且中心点把这条最长路径分成两段等长的路. 那么做法就很简单啦 ...

  3. Vijos P1848 记数问题【进制】

    描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中,数字 1 出现了 4 ...

  4. Vijos P1131 最小公倍数和最大公约数问题【暴力】

    最小公倍数和最大公约数问题 描述 输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P.Q的个数. 条件:1.P.Q是正整数 2.要求P.Q以xO为最大公 ...

  5. Vijos P1103 校门外的树【线段树,模拟】

    校门外的树 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,--, ...

  6. 拉力赛 (Standard IO)

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

  7. Vijos p1165 火烧赤壁 离散化+单调栈

    题目链接:https://vijos.org/p/1165 题意:输入n(n <= 20,000)段线段的端点,问所有线段的长度总和为多少? input: 3 -1 1 5 11 2 9 out ...

  8. |Vijos|树状数组|P1512 SuperBrother打鼹鼠

    https://vijos.org/p/1512 一个二维树状数组,注意树状数组不能出现0,把所有坐标+1即可,求子矩阵和为 sub(x2,y2) - sub(x1-1,y2) - sub(x2, y ...

  9. Vijos P1756 数字反转【进制】

    背景 noip2011 NO.1 描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). ...

最新文章

  1. SWIFT问题很大,第4家受害银行浮出水面
  2. 安卓 静态文件读取 staticFile
  3. Vue.js组件化开发实践
  4. 两周的时间教会我,要低头做人(jQuery实现京东购物车)
  5. Java并发编程(一)线程的各种创建方式
  6. C#.Net工作笔记013---c# lambda表达式对list数据进行条件查询_分组_排序_过滤_很好用
  7. Python学习之路(一)字符串
  8. matlab对数组中的某一列进行排序
  9. 无线桥接与中继的区别
  10. 2021年石景山区景贤计划人才认定条件及材料,补贴100万
  11. 前端学习——静态网页制作
  12. Scroller全认知,对于Scroller 你真的了解吗?
  13. 博凌科技携手中企动力用互联网思维卖乐器
  14. 如何撰写国内外研究现状
  15. MySQL CAST()函数用法
  16. Zephyr pinctrl
  17. UVA-12627(考眼力~)
  18. 看Lucene源码必须知道的基本概念
  19. 3.5寸服务器硬盘v4,【02311REJ 960GB SSD SATA RH2288V3 V4华为服务器硬盘】价格_厂家 - 中国供应商...
  20. QG工作室——智能与嵌入式系统小组

热门文章

  1. js创建节点,小试牛刀
  2. 介绍 Spring 3.1 M1 中的缓存功能
  3. SQL Cookbook:二、查询结果排序(1)以指定的次序返回查询结果
  4. 硅谷企業面臨新的反壟斷枷鎖
  5. CentOS中通过NAT连接网络
  6. python删除列表中字符串_python - 删除字符串中的字符列表
  7. 跨语言、多语言信息检索
  8. mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图
  9. Android面试题Service,Android面试题-IntentService源码分析
  10. lumion自动保存_LUMION吊打MAX,轻松玩转规划渲染!