#BST0000017. Cây này có phải BST? (Is This a Binary Search Tree?)

Cây này có phải BST? (Is This a Binary Search Tree?)

Cây này có phải BST? (Is This a Binary Search Tree?)

Nguồn: HackerRank

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

Đề bài

Cho một cây nhị phân. Mỗi nút mang một khóa số nguyên.

Cây là một cây tìm kiếm nhị phân (BST) nghiêm ngặt khi, 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 được xét trên toàn bộ cây con, không chỉ trên hai cạnh nối trực tiếp từ một nút tới các con của nó. Do đó một khóa nằm sâu hơn nhiều mức vẫn phải thỏa mọi giới hạn do các tổ tiên của nó tạo ra.

Hãy xác định cây đã cho có thỏa định nghĩa BST nghiêm ngặt hay không.

Input

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

Nếu n>0n>0, tiếp theo có nn dòng. Dòng thứ ii mô tả nút ii bằng ba giá trị key left right, trong đó left và right là chỉ số con trái và con phải. Chỉ số 00 biểu thị không có nút con; các chỉ số khác nằm trong [1,n][1,n].

Dữ liệu được bảo đảm mô tả một cây nhị phân hợp lệ có gốc rr: cây liên thông, không có chu trình và mỗi nút khác gốc có đúng một cha. Khóa các nút có thể làm cây vi phạm điều kiện BST.

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, khóa của mỗi nút 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 55 có khóa 99 và nằm trong cây con trái của gốc có khóa 88. Mọi khóa trong cây con trái của 88 phải nhỏ hơn 88, nhưng 9>89>8.

Vì vậy cây không phải BST nghiêm ngặt và chương trình in NO.