题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6115

题意:中文题面

分析:直接维护LCA,然后暴力枚举集合维护答案即可。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 200010;
const int inf = 0x3f3f3f3f;
struct edge{
int to,len,next;
}E[maxn*2];
vector<int>G[maxn];
int head[maxn],edgecnt,fa[maxn][20],dis[maxn],dep[maxn];
void init(){
edgecnt=0;
memset(head,-1,sizeof(head));
}
void add(int u, int v, int w){
E[edgecnt].to=v,E[edgecnt].len=w,E[edgecnt].next=head[u],head[u]=edgecnt++;
}
void dfs(int x,int d,int Len, int pre){
dis[x]=Len;
dep[x] = d;
fa[x][0]=pre;
for(int i=1; i<20; i++){
fa[x][i]=fa[fa[x][i-1]][i-1];
}
for(int i=head[x];~i;i=E[i].next){
int v=E[i].to;
if(v == pre) continue;
int len=E[i].len;
if(v==pre) continue;
dfs(v, d+1, Len + len, x);
}
}
int LCA(int u, int v){
if(dep[u]<dep[v]) swap(u,v);
for(int i=19; i>=0; i--){
if(dep[fa[u][i]]>=dep[v]){
u=fa[u][i];
}
}
if(u==v) return u;
for(int i=19; i>=0; i--){
if(fa[u][i]!=fa[v][i]){
u=fa[u][i];
v=fa[v][i];
}
}
return fa[u][0];
}
int n, m;
int getLen(int u, int v){
int _lca = LCA(u,v);
return dis[u]+dis[v]-2*dis[_lca];
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
for(int i=0; i<maxn; i++) G[i].clear();
memset(dis, 0, sizeof(dis));
memset(fa, 0, sizeof(fa));
scanf("%d%d",&n,&m);
init();
for(int i=1; i<n; i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
dfs(1,0,0,-1);
for(int i=1; i<=m; i++){
int num,x;
scanf("%d", &num);
while(num--){
scanf("%d",&x);
G[i].push_back(x);
}
}
int q;
scanf("%d", &q);
while(q--)
{
int a,b;
scanf("%d%d",&a,&b);
int ans = 0x3f3f3f3f;
for(int i=0; i<G[a].size(); i++){
for(int j=0; j<G[b].size(); j++){
ans = min(ans, getLen(G[a][i], G[b][j]));
}
}
printf("%d\n", ans);
}
}
return 0;
}

HDU 6115 Factory LCA,暴力的更多相关文章

  1. hdu 6115(LCA 暴力)

    Factory Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total ...

  2. 【bzoj3251】树上三角形 朴素LCA+暴力

    题目描述 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改. 输入 第一行两个整数n.q表示树的点数和操 ...

  3. HDU 5536--Chip Factory(暴力)

    Chip Factory Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  4. hdu 4547(LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4547 思路:这题的本质还是LCA问题,但是需要注意的地方有: 1.如果Q中u,v的lca为u,那么只需 ...

  5. hdu 5461 Largest Point 暴力

    Largest Point Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  6. HDU 5044 离线LCA算法

    昨天写了HDU 3966 ,本来这道题是很好解得,结果我想用离线LCA 耍一把,结果发现离线LCA 没理解透,错了好多遍,终得AC ,这题比起 HDU 3966要简单,因为他不用动态查询.但是我还是错 ...

  7. How far away ? HDU - 2586 【LCA】【RMQ】【java】

    题目大意:求树上任意两点距离. 思路: dis[i]表示i到根的距离(手动选根),则u.v的距离=dis[u]+dis[v]-2*dis[lca(u,v)]. lca:u~v的dfs序列区间里,深度最 ...

  8. hdu 5762 Teacher Bo 暴力

    Teacher Bo 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5762 Description Teacher BoBo is a geogra ...

  9. Chip Factory(HDU5536 + 暴力 || 01字典树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目: 题意: 对于给定的n个数,求出三个下标不同的数使得(si+sj)^sk最大. 思路: ...

随机推荐

  1. hdu 3015 Disharmony Trees (离散化+树状数组)

    Disharmony Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. git log 查看提交记录

    git log 查看提交记录 1. git log 查看提交历史记录2. git log --oneline 或者 git log --pretty=oneline 以精简模式显示3. git log ...

  3. BZOJ4516:[SDOI2016]生成魔咒——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4516 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一 ...

  4. [Leetcode] minimum window substring 最小字符窗口

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  5. 四道JavaScript面试题检测你的js基本功

    下面有四道简短的JavaScript小脚本,如果你能顺利预测脚本的运行结果,那么你的JavaScript基本功还是可以的.如果答错了,可以相应地去补一下缺漏的知识.反正也很简单,答错了只是说明你没了解 ...

  6. Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例

    1.业务需求 在拥有手机号在每个基站处停留时间日志 和 基站信息的 算出某个手机号的(所在基站,停留时间),(当前所在经度,当前所在纬度) 其中手机连接基站产生的日志信息类似如下: 186888888 ...

  7. HDU 5538 (水不水?)

    House Building Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  8. 题解【luogu1073 最优贸易】

    Solution 考虑原图是 DAG 时怎么做. 拓扑排序 + dp ,令 dp[i] 表示 \(1\) 到 \(i\) 的路径上最小的卖出价格.转移方程就是对每一个可以到达这个点的 dp 取个 mi ...

  9. bzo4802 欧拉函数 miller_rabin pollard_rho

    欧拉函数 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 1112  Solved: 418[Submit][Status][Discuss] Descr ...

  10. liunx系统下安装mysql数据库5.7.13版本

    一:在/usr/local目录下解压安装包