[CF1304E] 1-Trees and Queries - LCA
由于可以走重边,所以任意一条路径长 + 2 仍然对应至少一条合法路径
很显然我们有 \(3\) 种基本路径
不经过 \((x,y)\)
经过 \(x \to y\)
经过 \(y \to x\)
假设某个基本路径的答案是 \(d\),询问是 \(k\),如果同时满足以下条件,则该基本路径可以作为答案
\(d \leq k\)
\(d = k \ (mod \ 2)\)
于是暴力做即可
#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
vector <int> g[N];
int n,t1,t2,q,x,y,a,b,k,fa[N][20],dep[N];
void dfs(int p,int fr) {
for(int q:g[p]) if(q!=fr) {
fa[q][0]=p;
dep[q]=dep[p]+1;
dfs(q,p);
}
}
int lca(int p,int q) {
if(dep[p]<dep[q]) swap(p,q);
for(int i=17;i>=0;--i) if(dep[fa[p][i]]>=dep[q]) p=fa[p][i];
for(int i=17;i>=0;--i) if(fa[p][i]-fa[q][i]) p=fa[p][i],q=fa[q][i];
if(p-q) return fa[p][0];
return p;
}
int dis(int p,int q) {
return dep[p]+dep[q]-2*dep[lca(p,q)];
}
signed main() {
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<n;i++) {
cin>>t1>>t2;
g[t1].push_back(t2);
g[t2].push_back(t1);
}
dep[1]=1;
dfs(1,0);
for(int i=1;i<=17;i++) {
for(int j=1;j<=n;j++) {
fa[j][i]=fa[fa[j][i-1]][i-1];
}
}
cin>>q;
for(int i=1;i<=q;i++) {
cin>>x>>y>>a>>b>>k;
int d;
d=dis(a,b);
if(d<=k && (d%2)==(k%2)) {puts("YES"); continue;}
d=dis(a,x)+1+dis(y,b);
if(d<=k && (d%2)==(k%2)) {puts("YES"); continue;}
d=dis(a,y)+1+dis(x,b);
if(d<=k && (d%2)==(k%2)) {puts("YES"); continue;}
puts("NO");
}
}
[CF1304E] 1-Trees and Queries - LCA的更多相关文章
- POJ.1986 Distance Queries ( LCA 倍增 )
POJ.1986 Distance Queries ( LCA 倍增 ) 题意分析 给出一个N个点,M条边的信息(u,v,w),表示树上u-v有一条边,边权为w,接下来有k个询问,每个询问为(a,b) ...
- Codechef Dynamic Trees and Queries
Home » Practice(Hard) » Dynamic Trees and Queries Problem Code: ANUDTQSubmit https://www.codechef.co ...
- poj 1986 Distance Queries LCA
题目链接:http://poj.org/problem?id=1986 Farmer John's cows refused to run in his marathon since he chose ...
- POJ 1986 Distance Queries(LCA Tarjan法)
Distance Queries [题目链接]Distance Queries [题目类型]LCA Tarjan法 &题意: 输入n和m,表示n个点m条边,下面m行是边的信息,两端点和权,后面 ...
- POJ 1986 - Distance Queries - [LCA模板题][Tarjan-LCA算法]
题目链接:http://poj.org/problem?id=1986 Description Farmer John's cows refused to run in his marathon si ...
- poj-1986 Distance Queries(lca+ST+dfs)
题目链接: Distance Queries Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 11531 Accepted ...
- POJ 1986 Distance Queries LCA两点距离树
标题来源:POJ 1986 Distance Queries 意甲冠军:给你一棵树 q第二次查询 每次你问两个点之间的距离 思路:对于2点 u v dis(u,v) = dis(root,u) + d ...
- [poj1986]Distance Queries(LCA)
解题关键:LCA模板题 复杂度:$O(n\log n)$ #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...
- 题解 CF1304E 【1-Trees and Queries】
前言 这场比赛,在最后 \(5\) 分钟,我想到了这道题的 \(Idea\),但是,没有打完,比赛就结束了. 正文 题目意思 这道题目的意思就是说,一棵树上每次给 \(x\) 和 \(y\) 节点连 ...
随机推荐
- OpenLayers 6 学习笔记2 WMS服务避坑记录
心血来潮,花1小时安装软件写代码+复习api,顺便熟悉一波wms 再次强化认知了wms获取要素的能力没有wfs强,有待考究 原文链接(转载请声明@秋意正寒 博客园/知乎/B站/csdn/小专栏):h ...
- spring boot 打包jar后访问classes文件夹的文件提示地址不存在
报错内容:class path resource [client.p12] cannot be resolved to absolute file path because it does not r ...
- 修改计算机名并更新sqlserver中存储的服务器名称
1. 查看计算机名use master go select @@servername select serverproperty('servername') 2.同步更新SQLse ...
- 查看mysql是否锁表了
1.查看表是否被锁: (1)直接在mysql命令行执行:show engine innodb status\G. (2)查看造成死锁的sql语句,分析索引情况,然后优化sql. (3)然后show p ...
- YARN安装和使用
简介 Yet Another Resource Negotiator ,负责整个集群资源的调度,和管理,支持多框架资源统一调度(HIVE spark flink) 开启yarn 安装hadoop,可以 ...
- django-分页(非海量数据)
views.py class AnalysisDataHandler(View): def get(self, request): analysis_data = MonitorCenterDataA ...
- C#实现图片文件到数据流,再到图片文件的转换
//----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo ...
- Tomcat中使用JNDI配置各种数据源
最近接手了一个离职同事的老项目,全是XML配的,看的我贼难受,不过了解下配置原理还是有好处的 1.MySql <Resource name ="cockpitTest" au ...
- MY_0003:设置界面显示单位
1,设置单位
- java开发相关工具安装包分享
链接:https://pan.baidu.com/s/19rSlXhrZ9AtNdai64tErGQ 提取码:04up