Phân chia cây

View as PDF

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

Cho đồ thị dạng cây gồm N đỉnh được đánh số từ 1 đến N. Đỉnh r là đỉnh gốc của cây.

Đỉnh p được gọi là tổ tiên của đỉnh u nếu thỏa mãn cả hai điều kiện:

  • Có cạnh nối giữa đỉnh p và đỉnh u.
  • Khi thực hiện duyệt DFS trên cây, đỉnh p được thăm trước đỉnh u.

Hãy tìm cách phân chia cây thành các đường đi thỏa mãn đồng thời:

  • Mỗi đỉnh thuộc chính xác một đường đi, một đường đi có thể có một hoặc nhiều đỉnh, các đường đi không nhất thiết phải có cùng số lượng đỉnh.
  • Mỗi đường đi có dạng v_1,v_2,...,v_k, trong đó đỉnh v_i là tổ tiên của đỉnh v_{i+1}.
  • Số lượng đường đi là ít nhất.

Ví dụ, cây với N=5 đỉnh và r=3 như hình sau:

drawing

Có thể phân chia cây trên thành 3 đường đi như sau:

  1. 315 (đường đi có 3 đỉnh)
  2. 4 (đường đi có 1 đỉnh)
  3. 2 (đường đi có 1 đỉnh)

Input

  • Dòng đầu tiên chứa hai số nguyên Nr (1 \le N \le 10^5 ; 1 \le r \le N).
  • N-1 dòng tiếp theo, dòng thứ i chứa hai số nguyên u_iv_i mô tả cạnh thứ i nối hai đỉnh u_i-v_i (1 \le u_i,v_i \le N ; u_i \neq v_i).
  • Dữ liệu đảm bảo đồ thị đã cho là một cây hợp lệ.

Output

  • In ra số lượng đường đi ít nhất.

Examples

Sample Input
5 3
3 4
3 1
1 2
1 5
Sample Output
3

Scoring

  • Subtask 1 - 750 điểm: N \le 500
  • Subtask 2 - 750 điểm: Không có ràng buộc gì thêm

Comments