洛谷 P3398 仓鼠找sugar
来源:互联网 发布:14 15nba总决赛数据 编辑:程序博客网 时间:2024/04/27 21:20
题目描述
小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d)。他们都会走最短路径。现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友?
小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧!
【题目分析】
LCA然后分情况判断。
【代码】
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int read(){ int ret=0; char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') { ret*=10; ret+=ch-'0'; ch=getchar(); } return ret;}int n,q;int f[100001][20]; //(0>>17)int h[200001],ne[200001],to[200001],en=0;int dep[100001];void add(int a,int b){ to[en]=b; ne[en]=h[a]; h[a]=en++;}void dfs(int k,int de){ dep[k]=de; for (int i=h[k];i>=0;i=ne[i]) if (f[k][0]!=to[i]) { f[to[i]][0]=k; dfs(to[i],de+1); }}void init(){ dfs(1,1); for (int i=1;i<=17;++i) for (int j=1;j<=n;++j) f[j][i]=f[f[j][i-1]][i-1];}int lca(int a,int b){ if (dep[a]<dep[b]) swap(a,b); int dis=dep[a]-dep[b]; for (int i=17;i>=0;--i) if (dis&(1<<i)) a=f[a][i]; if (a==b) return dep[a]; for (int i=17;i>=0;--i) { if (f[a][i]!=f[b][i]) { a=f[a][i]; b=f[b][i]; } } return dep[f[a][0]];}int main(){ memset(h,-1,sizeof h); n=read();q=read(); for (int i=1;i<n;++i) { int a,b; a=read(); b=read(); add(a,b); add(b,a); } init(); for (int i=1;i<=q;++i) { int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); int minn=max(lca(a,b),lca(c,d)); int ans=max(max(lca(a,c),lca(a,d)),max(lca(b,c),lca(b,d))); if (ans>=minn) printf("Y\n"); else printf("N\n"); }}
0 0
- 洛谷P3398 仓鼠找sugar
- 洛谷 P3398 仓鼠找sugar
- 洛谷 P3398 仓鼠找sugar
- 洛谷P3398 仓鼠找sugar
- 洛谷P3398 仓鼠找sugar
- P3398 仓鼠找sugar
- 【洛谷 P3398】仓鼠找sugar lca+判断
- Luogu P3398 仓鼠找sugar 倍增LCA
- 仓鼠找sugar II
- LCA——Luogu3398 仓鼠找sugar
- 【Luogu3398】仓鼠找sugar(树链剖分)
- 洛谷 P3400 仓鼠窝
- 洛谷 P3400 仓鼠窝
- 仓鼠
- Sugar
- 小仓鼠
- 小仓鼠
- rust sugar
- 数学期望动态规划
- The 'Apple Push Notification' feature is only available to users enrolled in Apple Developer Program
- 文章标题
- Java 配置文件 .properties 读取
- C++ const对象详解
- 洛谷 P3398 仓鼠找sugar
- 李群、李代数在计算机视觉中的应用
- 关于struts2中使用OGNL表达式取值,取不到值的原因及解决方法
- 04 JS-DOM之-直接获取节点(3种方法)
- 问题记录-handlebar-loader-webpack
- Unity AssetBundle爬坑手记
- mobiscroll控件学习
- Android四大组件Activity启动源码分析
- git学习笔记