Sửa cây

Đề bài

Mô tả

Một cây có gốc gồm n đỉnh (đánh số từ 1 đến n) có thể được mô tả bằng một mảng p1,p2,,pn, trong đó pi là cha của đỉnh i. Riêng đỉnh gốc r được quy ước là cha của chính nó, tức pr=r.

Một mảng p1,p2,,pn được gọi là hợp lệ nếu nó mô tả đúng một cây có gốc, nghĩa là:

  1. Tồn tại đúng một chỉ số r thỏa pr=r (đỉnh này là gốc).
  2. Với mọi đỉnh ir, xét cạnh nối i với pi; tập các cạnh này cùng với các đỉnh tạo thành một cây (liên thông, không có chu trình).

Cho một mảng a1,a2,,an (không nhất thiết hợp lệ). Hãy thay đổi ít nhất một số phần tử của mảng để thu được một mảng hợp lệ.

In ra số phần tử cần thay đổi ít nhất, và một mảng hợp lệ bất kỳ đạt được số thay đổi đó.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số đỉnh.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

  • Dòng đầu in ra số phần tử ít nhất cần thay đổi.
  • Dòng thứ hai in ra một mảng hợp lệ bất kỳ thu được sau đúng số thay đổi đó. Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ràng buộc

  • 2n2·105
  • 1ain

Ví dụ

Input Output Giải thích
4
2 3 3 4
1
2 3 3 3
Mảng ban đầu có hai đỉnh tự trỏ vào mình (a3=3, a4=4) nên có hai "gốc". Đổi a4 từ 4 thành 3 để chỉ còn một gốc là đỉnh 3; cây thu được hợp lệ với đúng 1 thay đổi.
5
3 2 2 5 3
0
3 2 2 5 3
Mảng ban đầu đã hợp lệ (gốc là đỉnh 2), không cần thay đổi gì.
8
2 3 5 4 1 6 6 7
2
2 3 5 4 4 4 6 7
Có một chu trình 12351 và hai đỉnh tự trỏ (4, 6). Cần 2 thay đổi: phá chu trình và loại bớt một gốc bằng cách trỏ về gốc 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0