Truy vấn đường đi trên cây

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1500 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Mạng lưới giao thông ở một nước bao gồm \(n\) thành phố (đánh số từ \(1\) đến \(n\)) và \(n-1\) đường nối các thành phố với nhau. Có một đường đi duy nhất giữa mỗi cặp thành phố. Mỗi con đường có một độ dài xác định.

Viết chương trình, với mỗi \(k\) cặp thành phố cho trước, tìm độ dài của con đường ngắn nhất và dài nhất trên đường đi giữa hai thành phố này.

Input

  • Dòng đầu tiên chứa số nguyên \(n\) (\(2 \le n \le 10^5\)).
  • Mỗi dòng trong số \(n-1\) dòng tiếp theo chứa 3 số nguyên \(a, b, c\) cho biết có một con đường độ dài \(c\) giữa thành phố \(a\) và thành phố \(b\). Độ dài của mỗi con đường là số nguyên dương không vượt quá \(10^6\).
  • Dòng tiếp theo chứa số nguyên \(k\) (\(1 \le k \le 10^5\)).
  • Mỗi dòng trong số \(k\) dòng tiếp theo chứa 2 số nguyên \(d\)\(e\) là chỉ số của 2 thành phố cần truy vấn.

Output

  • Với mỗi truy vấn, in ra trên một dòng 2 số nguyên lần lượt là độ dài của con đường ngắn nhất và dài nhất trên đường nối giữa 2 thành phố tương ứng.

Example

Test 1

Input
5
2 3 100
4 3 200
1 5 150
1 3 50
3
2 4
3 5
1 2
Output
100 200
50 150
50 100

Constraints

  • \(2 \le n \le 10^5\).
  • \(1 \le k \le 10^5\).
  • Độ dài mỗi con đường \(c \le 10^6\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.