Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Đường đi trên cây

Dễ Disjoint set (DSU)

  • 100 Điểm
  • 0% Tỉ lệ AC
  • 0 Số AC
  • 256M Bộ nhớ giới hạn
  • 1.0s Giới hạn thời gian

Cho một đồ thị dạng cây gồm \(n\) đỉnh. Xét \(m\) đường đi với đỉnh xuất phát và kết thúc tương ứng là \(s_i, t_i\ (1 \le s_i \neq t_i \le n, 1 \le i \le m)\), gọi \(w_i\) là trọng số của đường đi thứ \(i\) được tính bằng tổng trọng số các cạnh trên đường đi. Nhiệm vụ của người chơi là gán trọng số các cạnh trên cây, mỗi cạnh gán giá trị bằng \(1\) hoặc \(2\) để \(w_1 \% 2 \le w_2 \% 2 \le \ldots \le w_m \% 2\).

Yêu cầu: Đếm số cách gán trọng số các cạnh thỏa mãn.

Input

  • Dòng đầu chứa hai số nguyên \(n, m\ (n, m \ge 2)\).
  • Dòng thứ hai gồm \(n - 1\) số mô tả cây, số thứ \(k\) là \(p_k\) cho biết đỉnh thứ \(k + 1\) nối với đỉnh \(p_k\ (1 \le p_k < k + 1)\).
  • Tiếp theo là \(m\) dòng, mỗi dòng chứa hai số \(s_i, t_i\).

Output

  • Gồm một dòng chứa một số nguyên \(r\) là số cách gán trọng số cho các cạnh chia dư cho \(10^9 + 7\).

Example

Test 1

Input
3 3
1 1
1 2
2 3
1 3
Output
2
Note
  • Subtask \(1\): \(n, m \le 15\).
  • Subtask \(2\): \(n, m \le 1500\).
  • Subtask \(3\): \(n, m \le 300000\).

Bình luận

Chưa có bình luận nào.