由于可以走重边,所以任意一条路径长 + 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的更多相关文章

  1. POJ.1986 Distance Queries ( LCA 倍增 )

    POJ.1986 Distance Queries ( LCA 倍增 ) 题意分析 给出一个N个点,M条边的信息(u,v,w),表示树上u-v有一条边,边权为w,接下来有k个询问,每个询问为(a,b) ...

  2. Codechef Dynamic Trees and Queries

    Home » Practice(Hard) » Dynamic Trees and Queries Problem Code: ANUDTQSubmit https://www.codechef.co ...

  3. poj 1986 Distance Queries LCA

    题目链接:http://poj.org/problem?id=1986 Farmer John's cows refused to run in his marathon since he chose ...

  4. POJ 1986 Distance Queries(LCA Tarjan法)

    Distance Queries [题目链接]Distance Queries [题目类型]LCA Tarjan法 &题意: 输入n和m,表示n个点m条边,下面m行是边的信息,两端点和权,后面 ...

  5. 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 ...

  6. poj-1986 Distance Queries(lca+ST+dfs)

    题目链接: Distance Queries Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 11531   Accepted ...

  7. POJ 1986 Distance Queries LCA两点距离树

    标题来源:POJ 1986 Distance Queries 意甲冠军:给你一棵树 q第二次查询 每次你问两个点之间的距离 思路:对于2点 u v dis(u,v) = dis(root,u) + d ...

  8. [poj1986]Distance Queries(LCA)

    解题关键:LCA模板题 复杂度:$O(n\log n)$ #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...

  9. 题解 CF1304E 【1-Trees and Queries】

    前言 这场比赛,在最后 \(5\) 分钟,我想到了这道题的 \(Idea\),但是,没有打完,比赛就结束了. 正文 题目意思 这道题目的意思就是说,一棵树上每次给 \(x\) 和 \(y\) 节点连 ...

随机推荐

  1. C#设计模式学习笔记:(14)命令模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7873322.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第二个模式--命 ...

  2. Mybatis注解开发多表一对一,一对多

    Mybatis注解开发多表一对一,一对多 一对一 示例:帐户和用户的对应关系为,多个帐户对应一个用户,在实际开发中,查询一个帐户并同时查询该账户所属的用户信息,即立即加载且在mybatis中表现为一对 ...

  3. Orleans[NET Core 3.1] 学习笔记(四)( 3 )监控Orleans Silo的方式 OrleansDashboard

    简介 Orleans用起来的确很爽,更爽的是咱们有能监控它的工具. OrleansDashboard 这个工具是一个可视化的Silo监控工具,Silo和Grain的活跃状态一目了然,各个接口的响应速度 ...

  4. python基础入门之一 —— 变量与运算符

    1.标识符 由数字,字母,下划线组成 不能由数字开头 不能使用内置关键字 严格区分大小 2.数据类型 数值:int (整型) float(浮点型) 布尔型:True(真) False(假) str ( ...

  5. 【Android】WebDav For Android

    最近在写一个云备份功能,参考了一下市面上的软件,发现有一种采用WebDav协议的云备份成本比较低,故特地研究一下使用. 服务器提供商是使用国内的坚果云,还是非常良心的. 坚果云官网:https://w ...

  6. 初识OpenSSH--1

    note:保护你的报文(communique)安全 !  最安全!!! 简介:OpenSSH使用SSH协议进行远程登录的主要连接工具.它对传输数据进行加密,以消除窃听,连接劫持和其他攻击.此外,Ope ...

  7. 剑指offer-面试题33-二叉搜索树的后序遍历序列-二叉树遍历

    /* 题目: 给定一个序列,判断它是否为某个二叉搜索树的后序遍历. */ /* 思路: 二叉搜索树:左子树<根节点<右子树. 序列的最右端为根节点,小于根节点的左半部分为左子树,大于根节点 ...

  8. opencv —— createTrackbar、getTrackbarPos 滑动条的创建和使用

    创建滑动条:createTrackbar 函数 createTrackbar 函数用于创建一个可以调整数值的滑动条,并将滑动条附加在指定的窗口上. int createTrackbar(const s ...

  9. PTA 学生成绩链表处理(C语言)

    本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *createlist(); struct ...

  10. 如何在CentOS上安装Tensorflow的gpu版本?

    系统配置 系统版本: Centos7.6 语言: Python3.5(anaconda3 4.2) 框架: Tensorflow 安装依赖 sudo yum install openjdk-8-jdk ...