做题打卡第八天

这篇博客记录了作者在做题打卡第八天时,练习贪心算法解决了一道关于最近公共祖先(LCA)的游戏题目。题目要求在给定的树结构中,对于系统选择的一组点,计算每对点的最近公共祖先与指定点的关系,并对答案取模。作者虽然学习过LCA,但仍然求助于他人来解答这个问题。
摘要由CSDN通过智能技术生成

今天练了贪心算法
发道难题
Imakf 是一个小蒟蒻,他最近刚学了 LCA,他在手机 APPstore 里看到一个游戏也叫做 LCA 就下载了下来。

题目描述
这个游戏会给出你一棵树,这棵树有 NN 个节点,根结点是 RR ,系统会选中 MM 个点 P_1,P_2…P_MP
1

,P
2

…P
M

,要Imakf 回答有多少组点对 (u_i,v_i)(u
i

,v
i

) 的最近公共祖先是 P_iP
i

。Imakf 是个小蒟蒻,他就算学了 LCA 也做不出,于是只好求助您了。

Imakf 毕竟学过一点 OI,所以他要求您把答案模 (10^9+7)(10
9
+7)。

输入格式
第一行 N , R , MN,R,M

此后 N-1N−1 行 每行两个数 a,ba,b 表示 a,ba,b 之间有一条边。

此后 11行,共 MM 个数,表示P_iP
i

题面链接:https://www.luogu.com.cn/problem/P5002

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define maxn (100000+3)
#define mod (1000000007)

long long head[maxn],tot;
struct edge {
   
    long long node,next;
} h[maxn<<1];
void addedge(long long u,long long v) {
   
    h[++tot].next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值