做什么题都要注意数组的大小,不要犯下数组越界的错误(温馨(狠心)提示);

做了好多遍就是不对,原来是【20】的数组,在for下循环1——》20,神奇爆零;

链接:https://www.luogu.org/problemnew/show/P3398

这道题有一个性质:

判断树上两条路径是否有交点或重叠部分,那就是

有a,b一条路径,还有c,d这条路径。

要是这两条路径相交或重合,

那么要不是lca(a,b)在cd上,就是lca(c,d)在ab上;

显然易得啊(反正我是不会证明,背下来记好了);

倍增lca

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int pre[maxn],other[maxn],last[maxn],l;
int n,q;
void add(int x,int y)
{
l++;
pre[l]=last[x];
last[x]=l;
other[l]=y;
}
int dep[maxn],jump[maxn][];
void dfs(int u)
{
for(int p=last[u];p;p=pre[p])
{
int v=other[p];
if(v==jump[u][]) continue;
dep[v]=dep[u]+;
jump[v][]=u;
dfs(v);
}
} int lca(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
for(int i=;i<=;i++)
{
if((dep[u]-dep[v])&(<<i)) u=jump[u][i];
}
if(u==v) return u;
for(int j=;j>=;j--)
{
if(jump[u][j]!=jump[v][j])
{
u=jump[u][j];
v=jump[v][j];
}
}
return jump[u][];
}
int main()
{
scanf("%d%d",&n,&q);
for(int i=;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
dfs();
for(int j=;j<=;j++)//17就够了,不要搞什么20
{
for(int i=;i<=n;i++)
{
jump[i][j]=jump[jump[i][j-]][j-];
}
}
for(int i=;i<=q;i++)
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
int x=lca(a,b);
int y=lca(c,d);
int l1=dep[a]+dep[b]-*dep[x];//a->b路径长度
int l2=dep[c]+dep[d]-*dep[y];//c->d路径长度
if(dep[c]+dep[x]-*dep[lca(x,c)]+dep[d]+dep[x]-*dep[lca(x,d)]==l2)//c->x->d==l2
{
printf("Y\n");
continue;
}
if(dep[a]+dep[y]-*dep[lca(a,y)]+dep[b]+dep[y]-*dep[lca(y,b)]==l1)//a->y->b==l1,就是两条线段长度和等于整个线段长度
{
printf("Y\n");
continue;
}
printf("N\n");
}
return ;
}

P3398 仓鼠找sugar 又一次血的教训的更多相关文章

  1. P3398 仓鼠找sugar

    P3398 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而 ...

  2. 洛谷 P3398 仓鼠找sugar 解题报告

    P3398 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而 ...

  3. P3398 仓鼠找sugar(树链剖分)

    P3398 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而 ...

  4. 洛谷P3398 仓鼠找sugar [LCA]

    题目传送门 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而 ...

  5. 【洛谷】【lca+结论】P3398 仓鼠找sugar

    [题目描述:] 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室 ...

  6. luogu P3398 仓鼠找sugar [LCA]

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...

  7. 洛谷10月月赛Round.1| P3398 仓鼠找sugar[LCA]

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...

  8. 洛谷P3398 仓鼠找sugar

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...

  9. P3398 仓鼠找sugar 树上路径相交判断

    \(\color{#0066ff}{题目描述}\) 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐 ...

随机推荐

  1. 【尺取或dp】codeforces C. An impassioned circulation of affection

    http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字 ...

  2. java Web项目Service层通用接口和entityVo对象与entity对象转化问题的解决方案

    Service层的接口中有一些比较常用方法,一次又一次的在新的Service层中被书写,所以懒惰的程序员又烦了,他们决定写个通用接口来解决这个问题. 有些项目中,实体类即承担接收表单数据的任务,又承担 ...

  3. mybatis连接mysql

    配置web.xml 1. <context-param> 参考文章 <context-param>    <param-name>contextConfigLoca ...

  4. nginx学习网站收录

    1.菜鸟教程 2. Nginx中文 3. Nginx官网 参考:http://www.cnblogs.com/knowledgesea/p/5175711.html

  5. js面试题总结

    1.typeof和Object.prototype.toString typeof是js里面判断变量类型的一种方法,但这种方法没有Object.prototype.toString准确,前者有6种判断 ...

  6. HTTP请求示例

    HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: l   请求方法URI协议/版本 l   请求头(Request Hea ...

  7. nexus3.1私服搭建

    原文:http://blog.csdn.net/qqqqq210/article/details/52993337 1.简介 近期公司需要搭建jenkins自动化构建部署,需要搭建nexus私服环境, ...

  8. jenkins节约硬盘空间的几个办法

    jenkins真是费硬盘和内存,我们先聊聊硬盘问题怎么解决: 1.不要保留太多的构建记录.发布包数量 相关描述如下:取最先匹配进行执行 2.构建完,删除吧

  9. SpringBoot初始教程之项目结构(一)

    SpringBoot初始教程之项目结构 1 简介 spring Boot makes it easy to create stand-alone, production-grade Spring ba ...

  10. HDU3459:Rubik 2&#215;2&#215;2(IDA)

    Problem Description Sonny is probably the only computer science Ph.D. student who cannot solve a Rub ...