Родинне дерево


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type

В давні часи в королівстві було велике дерево, яке символізувало родинні зв'язки між мешканцями королівства. Це дерево складалося з \(n\) вершин та \(n-1\) ребра. Кожна вершина дерева представляє одного жителя королівства, а кожне ребро - родинний зв'язок між двома жителями.

Задача полягає у визначенні родинних зв'язків між мешканцями королівства. Для кожного з \(q\) запитів вам потрібно визначити, чи є один мешканець королівства предком іншого в цьому дереві.

Input Specification

Перший рядок містить два цілі числа \(n\) та \(q\) - кількість вершин у дереві та кількість запитів відповідно \((1 \leq n, q \leq 10^5)\).

Наступні \(n-1\) рядків містять по два цілі числа \(u\) та \(v\) , що означає існування ребра між вершинами \(u\) та \(v\) \((1 \leq u, v \leq n)\). Це ребро вказує на те, що між жителями існує прямий родинний зв'язок.

Наступні \(q\) рядків містять по два цілі числа \(a\) та \(b\) - вершини, для яких потрібно перевірити, чи є \(a\) предком \(b\) \((1 \leq a, b \leq n)\).

Output Specification

Для кожного запиту виведіть "Yes", якщо вершина \(a\) є предком вершини \(b\), і "No" в іншому випадку.

Sample Input 1

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

Sample Output 1

YES
YES
NO

Comments

There are no comments at the moment.