题目链接: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. 【bzoj4500】矩阵 带权并查集

    题目描述 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 1. 选择一行, 该行每个格子的权值加1或减1. 2. 选择一列, 该列每个格子的权值加1或减1. 现在有K个限制,每 ...

  2. IntellIJ IDEA 配置 Maven

    一.配置Maven环境 1.下载apache-maven文件,选择自己需要的版本 2.解压1所下载文件,E:\apache-maven-3.5.4 3.配置Maven环境变量 a. MAVEN_HOM ...

  3. 【刷题】BZOJ 1002 [FJOI2007]轮状病毒

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  4. P2805 [NOI2009]植物大战僵尸(最小割+拓扑排序)

    题意: n*m的矩阵,每个位置都有一个植物.每个植物都有一个价值(可以为负),以及一些它可以攻击的位置.从每行的最右面开始放置僵尸,僵尸从右往左行动,当僵尸在植物攻击范围内时会立刻死亡.僵尸每到一个位 ...

  5. STL使用记录

    1,map 对map实在不熟...赶紧记录一下用法吧. 后来再发现新的用法再补充吧 定义: map<int, int> m; 其中的int可以为自定义的任何类型. m[key值类型的变量] ...

  6. BZOJ4553:[HEOI2016/TJOI2016]序列——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4553 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某 ...

  7. NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day2题解

    肝了两题... T1一眼题,分解质因数,找出2的个数和5的个数取min输出 #include<iostream> #include<cstring> #include<c ...

  8. IE下textarea去除回车换行符

    在textarea中回车,会产生转义字符\r\n,有些时候我们不需要这两个转移字符,也就是清空textarea.下面的方法并不是清空,但是能够起到差不多的效果. 如果在textarea中按回车,内容提 ...

  9. contOS镜像快速加载到本地虚拟机软件

    无需任何配置,只要两步: 1.首先打开 虚拟机软件VMware 2.然后打开镜像目录,找到后缀名为 .vmx 的文件,双击,即可. 会自动 挂载好,如下图:

  10. 中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_秒计时的数字时钟

    第2周编程题 查看帮助 返回   第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系 ...