Родинне дерево
В давні часи в королівстві було велике дерево, яке символізувало родинні зв'язки між мешканцями королівства. Це дерево складалося з \(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