#BST0000012. Kiểm tra một cây có phải BST (Validate a Binary Search Tree)

Kiểm tra một cây có phải BST (Validate a Binary Search Tree)

Kiểm tra một cây có phải BST (Validate a Binary Search Tree)

Nguồn: Phước Hưng OJ

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho trực tiếp một cây nhị phân có nn nút. Mỗi nút mang một khóa và có thể có con trái, con phải.

Cây được gọi là một BST nghiêm ngặt nếu với mọi nút có khóa vv:

  • mọi khóa trong toàn bộ cây con trái đều nhỏ hơn vv;
  • mọi khóa trong toàn bộ cây con phải đều lớn hơn vv.

Điều kiện phải đúng với toàn bộ hậu duệ, không chỉ với hai nút con trực tiếp. Vì vậy, hai nút cha - con có thể thỏa so sánh cục bộ nhưng cây vẫn không phải BST nếu một hậu duệ nằm sai miền giá trị.

Hãy xác định cây đã cho có phải một BST nghiêm ngặt hay không.

Input

Dòng đầu chứa hai số nguyên nn và rr, trong đó rr là chỉ số nút gốc. Nếu n=0n=0 thì r=0r=0.

Nếu n>0n>0, tiếp theo có đúng nn dòng. Dòng thứ ii mô tả nút ii bằng ba giá trị key left right:

key là khóa của nút ii;

left là chỉ số con trái của nút ii;

right là chỉ số con phải của nút ii.

Giá trị chỉ số bằng 00 nghĩa là không có nút con tương ứng. Các chỉ số nút hợp lệ khác nằm trong đoạn [1,n][1,n].

Dữ liệu được bảo đảm mô tả đúng một cây nhị phân có gốc rr: không có chu trình, mọi nút đều thuộc cây và mỗi nút khác gốc có đúng một cha. Khóa của các nút không được bảo đảm phân biệt.

Output

In YES nếu cây là BST nghiêm ngặt.

Ngược lại, in NO.

Subtask

Subtask 1 (20 điểm): 0≤n≤200\le n\le 20.

Subtask 2 (30 điểm): 0≤n≤50000\le n\le 5000.

Subtask 3 (50 điểm): 0≤n≤2000000\le n\le 200000.

Trong tất cả các subtask, mỗi khóa là số nguyên có dấu 64-bit.

Ví dụ

Input

5 1
8 2 3
3 4 5
10 0 0
1 0 0
9 0 0

Output

NO

Giải thích

Nút 11 là gốc và có khóa 88. Nút 22 nằm trong cây con trái của gốc và có khóa 33. Nút 55 lại nằm trong cây con của nút 22, nên cũng thuộc toàn bộ cây con trái của khóa 88.

Tuy nhiên nút 55 có khóa 9>89>8. Vì một khóa lớn hơn 88 xuất hiện trong cây con trái của gốc, cây vi phạm điều kiện BST nghiêm ngặt và output là NO.