trang chủ / đề bài / gr12_depth

Gốc, cha và độ sâu

Đề bài

Mô tả

Cho một cây gồm n đỉnh đánh số từ 1 đến n và n−1 cạnh vô hướng. Ta chọn đỉnh r làm gốc của cây.

Với mỗi đỉnh v, hãy cho biết:

  • cha của v: đỉnh kề với v nằm trên đường đi từ v về gốc r (gốc không có cha, quy ước cha của gốc là 0);
  • độ sâu của v: số cạnh trên đường đi từ r tới v (độ sâu của gốc là 0).

Lưu ý: mỗi cạnh được cho dưới dạng hai đầu mút theo thứ tự bất kỳ, không nhất thiết đỉnh đứng trước là cha.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n, r.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u,v mô tả một cạnh nối u và v.

Dữ liệu đảm bảo các cạnh tạo thành một cây.

Dữ liệu ra

  • Dòng thứ nhất: n số nguyên, số thứ v là cha của đỉnh v.
  • Dòng thứ hai: n số nguyên, số thứ v là độ sâu của đỉnh v.

Ràng buộc

  • 1≤n≤2·105
  • 1≤r≤n
  • 1≤u,v≤n, u≠v

Ví dụ

Input Output Giải thích
6 3
1 2
3 2
2 4
5 3
6 5
2 3 0 2 3 5
2 1 0 2 1 2
Gốc là 3. Các con của 3 là 2 và 5; con của 2 là 1 và 4; con của 5 là 6.
4 1
4 3
3 2
2 1
0 1 2 3
0 1 2 3
Cây là đường đi 1−2−3−4. Các cạnh được cho theo chiều từ con lên cha, ví dụ cạnh "4 3" có 3 là cha của 4.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0