Bedao Regular Contest 09 - TREETRAVEL

Xem dạng PDF

Gửi bài giải


Điểm: 1,30 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một cây có ~n~ đỉnh và ~n - 1~ cạnh. Một đỉnh ~i~ khác đỉnh gốc có cha trên cây là đỉnh ~p_i~, còn nếu ~i~ là gốc thì ~p_i = 0~. Mỗi đỉnh trên cây còn có một giá trị gọi là giá trị của đỉnh, ban đầu giá trị của tất cả các đỉnh đều bằng ~1~.

Cho một dãy ~a~ là thứ tự xét các đỉnh, tại mỗi đỉnh ~u~ được xét cần thực hiện biển đổi sau:

  • Với mỗi đỉnh ~v~ thuộc đường đi từ đỉnh gốc đến đỉnh cha của đỉnh ~u~, tăng giá trị của đỉnh ~v~ một lượng bằng với giá trị đỉnh ~u~.

Với mỗi đỉnh trên cây, hãy cho biết giá trị của đỉnh đó tính đến thời điểm nó được thăm là bao nhiêu, in ra phần dư của kết quả khi chia cho ~10^9 + 7~.

Input

  • Dòng đầu tiên chứa số nguyên dương ~n~ - số đỉnh trên cây ~(1 \le n \leq 10^5)~.

  • Dòng thứ hai chứa ~n~ số ~p_1, p_2,..., p_n~. ~(1 \le p_i \le n)~

  • Dòng thứ ba chứa ~n~ số ~a_1, a_2,..., a_n~. ~(1 \le a_i \le n)~

Output

  • In ra ~n~ dòng, dòng thứ ~i~ chứa một số duy nhất là giá trị đỉnh ~i~ tính đến thời điểm đỉnh ~i~ được xét chia lấy dư cho ~10^9 + 7~.

Subtask

  • ~20\%~ số test có ~n \leq 1000~.
  • ~80\%~ số test còn lại không có ràng buộc gì thêm.

Sample Input 1

6
2 3 0 5 3 5
1 4 6 5 2 3

Sample Output 1

1 2 9 1 3 1 

Note

  • Giá trị ban đầu của các đỉnh: ~[1, 1, 1, 1, 1, 1]~
  • ~1~: ~[1, 2, 2, 1, 1, 1]~
  • ~4~: ~[1, 2, 3, 1, 2, 1]~
  • ~6~: ~[1, 2, 4, 1, 3, 1]~
  • ~5~: ~[1, 2, 7, 1, 3, 1]~
  • ~2~: ~[1, 2, 9, 1, 3, 1]~
  • ~3~: ~[1, 2, 9, 1, 3, 1]~

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.