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

Truy vấn đường đi II

Đề bài

Mô tả

Cho một cây gồm n đỉnh, gốc tại đỉnh 1. Mỗi đỉnh có một giá trị ban đầu. Xử lý q thao tác:

  • Loại 1: Cập nhật giá trị của một đỉnh.
  • Loại 2: Tìm giá trị lớn nhất trên đường đi giữa hai đỉnh.

Dữ liệu vào

Dòng đầu chứa hai số nguyên nq.

Dòng thứ hai chứa n số nguyên là giá trị ban đầu của các đỉnh từ 1 đến n.

  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên ab mô tả một cạnh của cây.

  • q dòng tiếp theo, mỗi dòng là một thao tác:

  • 1 s x — cập nhật giá trị đỉnh s thành x.
  • 2 a b — tìm giá trị lớn nhất trên đường đi giữa ab.

Dữ liệu ra

Với mỗi thao tác loại 2, in ra giá trị lớn nhất. Tất cả kết quả in trên một dòng, cách nhau bởi dấu cách.

Ràng buộc

  • 1n,q2·105
  • 1vi,x109
  • 1a,b,sn

Ví dụ

Input Output Giải thích
5 3
2 4 1 3 3
1 2
1 3
2 4
2 5
2 3 5
1 2 2
2 3 5
4 3 Đường 3→5: đỉnh 3(1),1(2),2(4),5(3), max=4. Sau cập nhật đỉnh 2 thành 2: max đường 3→5 = max(1,2,2,3)=3.
4 2
3 1 4 2
1 2
1 3
1 4
2 2 3
2 1 4
4 3 Đường 2→3: đỉnh 2(1),1(3),3(4), max=4. Đường 1→4: đỉnh 1(3),4(2), max=3.

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