[蓝桥杯 2024 省 A] 零食采购
题目描述
小蓝准备去星际旅行,出发前想在本星系采购一些零食,星系内有 n颗星球,由 n−1条航路连接为连通图,第 i颗星球卖第 ci种零食特产。小蓝想出了 q个采购方案,第 i个方案的起点为星球 si ,终点为星球 ti,对于每种采购方案,小蓝将从起点走最短的航路到终点,并且可以购买所有经过的星球上的零食(包括起点终点),请计算每种采购方案最多能买多少种不同的零食。
输入格式
输入的第一行包含两个正整数 n,q用一个空格分隔。
第二行包含 nn 个整数 c1,c2,⋯ ,cn相邻整数之间使用一个空格分隔。
接下来 n−1行,第 i行包含两个整数 ui,vi用一个空格分隔,表示一条 航路将星球 ui与 vi相连。
接下来 q行,第 i行包含两个整数 si,ti用一个空格分隔,表示一个采购方案。
输出格式
输出 q行,每行包含一个整数,依次表示每个采购方案的答案。
对于所有评测用例,1≤n,q≤105,1≤ci≤20,1≤ui,vi≤n,1≤si,ti≤n1≤n,q≤105,1≤ci≤20,1≤ui,vi≤n,1≤si,ti≤n。
解析
首先将一个顶点作为树根,形成一个树。对于每一个查询s,t,如果能知道s和t的最近公共祖先fa,则只需计算s到fa购买了哪些零食,t到fa购买了哪些零食,求和即可