Bạn có \(n\) đỉnh và \(m\) cạnh, tạo thành một số đồ thị cây rời rạc.
Bạn có thể thêm các cạnh mới giữa hai đỉnh thuộc hai cây khác nhau, sao cho đồ thị luôn là cây (không tạo chu trình).
Hãy xác định độ dài lớn nhất của một đường đi đơn giản (không đi qua đỉnh nào quá một lần) trong đồ thị sau khi thêm các cạnh.
Input
Dòng đầu chứa hai số nguyên \(n\) và \(m\) (\(1 \le n \le 100000\), \(0 \le m < n\)).
\(m\) dòng tiếp theo, mỗi dòng chứa hai số \(a_i\), \(b_i\) (\(1 \le a_i, b_i \le n\)) --- đỉnh \(a_i\) và \(b_i\) được nối trực tiếp.
Output
In ra độ dài lớn nhất của đường đi đơn giản sau khi thêm các cạnh hợp lệ.
Example
Test 1
Input
8 6
1 2
1 3
1 4
5 6
5 7
5 8
Output
6
Scoring
- Subtask 1 (15 điểm): \(m = n - 1\)
- Subtask 2 (15 điểm): \(b_i = a_i + 1\) với mọi \(i\)
- Subtask 3 (15 điểm): \(1 \le a_i \le 2\) với mọi \(i\)
- Subtask 4 (15 điểm): \(n \le 1000\)
- Subtask 5 (40 điểm): Không có ràng buộc bổ sung
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.