trang chủ / đề bài / icpc20_nat_g

Cặp lớn nhất

Đề bài

Mô tả

Cho một cây gồm n đỉnh. Mỗi cạnh có một trọng số và mỗi đỉnh có một nhãn. Ký hiệu nhãn của đỉnh i là label(i).

Một đường đi đơn từ đỉnh s đến đỉnh t là một dãy đỉnh có thứ tự v0→v1→v2→…→vk, trong đó v0=s, vk=t và các vi đôi một khác nhau. Với mọi chỉ số i hợp lệ, vi và vi+1 được nối trực tiếp bởi một cạnh. Lưu ý rằng trong một cây luôn có đường đi đơn giữa mọi cặp đỉnh.

Ta định nghĩa:

  • dist(u,v) là tổng trọng số các cạnh trên đường đi đơn từ u đến v;
  • greatness(u,v)=dist(u,v)·gcd(label(u),label(v)).

Hãy tìm hai đỉnh khác nhau u và v có greatness(u,v) lớn nhất.

Dữ liệu vào

Dữ liệu vào gồm nhiều bộ dữ liệu, mỗi bộ dữ liệu có dạng:

  • Dòng đầu tiên chứa một số nguyên n (2≤n≤105).
  • Dòng thứ hai chứa n số nguyên, số thứ i là label(i) (1≤label(i)≤5·105).
  • n−1 dòng tiếp theo, mỗi dòng chứa ba số nguyên u, v, w (1≤u,v≤n, 1≤w≤106) mô tả một cạnh trọng số w nối hai đỉnh u và v.

Dữ liệu vào kết thúc bằng một dòng chứa số 0, dòng này không phải là một bộ dữ liệu.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một dòng chứa giá trị lớn nhất của greatness(u,v).

Ràng buộc

  • 2≤n≤105, tổng n qua tất cả các bộ dữ liệu không vượt quá 105.
  • 1≤label(i)≤5·105, 1≤w≤106.

Ví dụ

Input Output Giải thích
2
10 10
1 2 10
0
100 dist(1,2)=10, gcd(10,10)=10.
4
6 10 15 7
1 2 5
2 3 3
3 4 100
3
4 8 12
1 2 1
2 3 1
0
108
8
Ví dụ bổ sung (không có trong đề gốc). Bộ thứ nhất: cặp (1,4) có dist=108 và gcd=1, lớn hơn cặp (1,3) với 8·3=24. Bộ thứ hai: cặp (1,3) có dist=2 và gcd(4,12)=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