CF1304E.1-Trees and Queries

普及+/提高

通过率:0%

时间限制:4.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Gildong was hiking a mountain, walking by millions of trees. Inspired by them, he suddenly came up with an interesting idea for trees in data structures: What if we add another edge in a tree?

Then he found that such tree-like graphs are called 1-trees. Since Gildong was bored of solving too many tree problems, he wanted to see if similar techniques in trees can be used in 1-trees as well. Instead of solving it by himself, he's going to test you by providing queries on 1-trees.

First, he'll provide you a tree (not 1-tree) with nn vertices, then he will ask you qq queries. Each query contains 55 integers: xx, yy, aa, bb, and kk. This means you're asked to determine if there exists a path from vertex aa to bb that contains exactly kk edges after adding a bidirectional edge between vertices xx and yy. A path can contain the same vertices and same edges multiple times. All queries are independent of each other; i.e. the added edge in a query is removed in the next query.

吉隆在爬山时,穿行于成千上万棵树木之间。受此启发,他突然想到数据结构中“树”的一个有趣变体:如果我们在一棵树中再额外添加一条边,会怎样?

随后他发现,这类类似树的图被称为1-树(1-tree)。由于吉隆已厌倦了解太多关于树的问题,他想检验一下:解决树问题的类似技巧是否也能用于1-树?但他并不打算自己动手求解,而是准备通过一系列关于1-树的查询来考验你。

首先,他会给你一棵含 nn 个顶点的普通树(不是1-树);接着,他会向你提出 qq 个查询。每个查询包含 55 个整数:xx、yy、aa、bb 和 kk。其含义是:在顶点 xx 与 yy 之间添加一条双向边后,判断是否存在一条从顶点 aa 到 bb 的路径,且该路径恰好包含 kk 条边。路径允许重复经过同一顶点和同一条边。所有查询相互独立;即某次查询中添加的边,在下一次查询中即被移除。

输入格式

The first line contains an integer nn (3≤n≤1053 \le n \le 10^5), the number of vertices of the tree.

Next n−1n-1 lines contain two integers uu and vv (1≤u,v≤n1 \le u,v \le n, u≠vu \ne v) each, which means there is an edge between vertex uu and vv. All edges are bidirectional and distinct.

Next line contains an integer qq (1≤q≤1051 \le q \le 10^5), the number of queries Gildong wants to ask.

Next qq lines contain five integers xx, yy, aa, bb, and kk each (1≤x,y,a,b≤n1 \le x,y,a,b \le n, x≠yx \ne y, 1≤k≤1091 \le k \le 10^9) – the integers explained in the description. It is guaranteed that the edge between xx and yy does not exist in the original tree.

第一行包含一个整数 nn(3≤n≤1053 \le n \le 10^5),表示树的顶点数。

接下来 n−1n-1 行,每行包含两个整数 uu 和 vv(1≤u,v≤n1 \le u,v \le n,u≠vu \ne v),表示顶点 uu 与 vv 之间存在一条边。所有边均为无向且互不相同。

下一行包含一个整数 qq(1≤q≤1051 \le q \le 10^5),表示 Gildong 想要询问的查询次数。

接下来 qq 行,每行包含五个整数 xx、yy、aa、bb 和 kk(1≤x,y,a,b≤n1 \le x,y,a,b \le n,x≠yx \ne y,1≤k≤1091 \le k \le 10^9),其含义如题面描述所述。保证原树中不存在连接 xx 与 yy 的边。

输出格式

For each query, print "YES" if there exists a path that contains exactly kk edges from vertex aa to bb after adding an edge between vertices xx and yy. Otherwise, print "NO".

You can print each letter in any case (upper or lower).

对于每个查询,如果在顶点 xx 和 yy 之间添加一条边后,存在一条从顶点 aa 到 bb、恰好包含 kk 条边的路径,则输出 "YES";否则输出 "NO"。

你可以以任意大小写(大写或小写)输出每个字母。

输入输出样例

  • 输入#1

    5
    1 2
    2 3
    3 4
    4 5
    5
    1 3 1 2 2
    1 4 1 3 2
    1 4 1 3 3
    4 2 3 3 9
    5 2 3 3 9

    输出#1

    YES
    YES
    NO
    YES
    NO

说明/提示

The image below describes the tree (circles and solid lines) and the added edges for each query (dotted lines).

Possible paths for the queries with "YES" answers are:

  • 11-st query: 11 – 33 – 22
  • 22-nd query: 11 – 22 – 33
  • 44-th query: 33 – 44 – 22 – 33 – 44 – 22 – 33 – 44 – 22 – 33

下图描述了树(圆圈和实线)以及每次查询所添加的边(虚线)。

答案为 “YES” 的查询所对应的可能路径如下:

  • 第 1 次查询:11 – 33 – 22
  • 第 2 次查询:11 – 22 – 33
  • 第 4 次查询:33 – 44 – 22 – 33 – 44 – 22 – 33 – 44 – 22 – 33

输入解题思路,AI测评打分。不知道怎么写?

首页