trang chủ / bài tập / invartree

Cây bất biến

Đề bài

Mô tả

Cho một hoán vị p gồm n phần tử, trong đó p1,p2,,pn là một cách sắp xếp lại của các số 1,2,,n.

Một cây gồm n đỉnh (đồ thị vô hướng liên thông, không có chu trình) được gọi là bất biến đối với hoán vị p nếu với mọi cặp đỉnh uv, điều kiện sau luôn đúng:

uv được nối với nhau bởi một cạnh khi và chỉ khi pupv được nối với nhau bởi một cạnh.

Nói cách khác, nếu ta thay tên mỗi đỉnh i thành pi thì tập cạnh của cây không thay đổi.

Hãy tìm một cây gồm n đỉnh bất biến đối với hoán vị p cho trước, hoặc xác định rằng không tồn tại cây nào như vậy.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số phần tử của hoán vị (cũng là số đỉnh của cây cần tìm).
  • Dòng thứ hai chứa n số nguyên p1,p2,,pn — hoán vị p.

Dữ liệu ra

  • Nếu không tồn tại cây thỏa mãn, in ra một dòng chứa NO.
  • Ngược lại, in ra YES ở dòng đầu, sau đó in ra n1 dòng, mỗi dòng chứa hai số nguyên là chỉ số hai đỉnh được nối bởi một cạnh của cây tìm được. Các đỉnh được đánh số từ 1; thứ tự các cạnh cũng như thứ tự hai đỉnh trong mỗi cạnh không quan trọng.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1n105
  • 1pinp là một hoán vị của 1,2,,n.

Ví dụ

Input Output Giải thích
4
4 3 2 1
YES
4 1
2 4
3 1
Hoán vị đổi chỗ 1423. Cạnh (4,1) biến thành (1,4), cạnh (2,4) biến thành (3,1), cạnh (3,1) biến thành (2,4) — tất cả đều là cạnh của cây nên cây này bất biến.
3
3 1 2
NO Hoán vị (312) là một chu trình độ dài 3, không có điểm bất động và không có cặp đổi chỗ nào, nên không tồn tại cây bất biến.
5
5 3 2 1 4
NO Phân tích thành các chu trình: (154) độ dài 3(23) độ dài 2. Tồn tại chu trình độ dài lẻ ngoài điểm bất động nên vô nghiệm.

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 1.26.3 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