Khoảng cách xa nhất trong đồ thị

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: 2200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho đồ thị vô hướng, liên thông, có trọng số gồm \(n\) đỉnh và \(n-1\) cạnh. Gọi \(f\) là khoảng cách xa nhất giữa \(2\) đỉnh trong \(n\) đỉnh đã cho.

Bây giờ, ta có \(q\) truy vấn, mỗi truy vấn gồm \(2\) số \(u\text{ }v\) - Thể hiện cạnh thứ \(u\) và cạnh thứ \(v\) của đồ thị đã cho. (\(u\ne v\)) (Biết rằng, các cạnh của đồ thị được đánh số bắt đầu từ \(1\)).

Yêu cầu: Ứng với mỗi truy vấn, in ra \(f\) nếu giả sử rằng: Đồ thị đã cho bị mất đi hai cạnh \(u\) và \(v\)

Input

  • Dòng thứ nhất chứa hai số nguyên \(n,q(1\le n,q\le 10^5)\)

  • \(n-1\) dòng tiếp theo, mỗi dòng gồm \(3\) số nguyên \(x,y,z\) - Thể hiện cạnh được nối bởi đỉnh \(x\) và đỉnh \(y\) có trọng số là \(z(0\le z\le 5000)\)

  • \(q\) dòng tiếp theo, mỗi dòng gồm \(2\) số nguyên \(u,v(1\le u,v\le n-1 ; u\ne v)\)

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(2\le n,q\le 20\)

  • Subtask \(2\) (\(80\%\) số điểm): Không có điều kiện gì

Example

Test 1

Input
4 2
1 2 1
3 2 3
2 4 4
1 2
2 3
Output
4
1
Note

Bình luận (1)

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