Mở rộng cạnh
View as PDF Time limit: 4.0s , Memory limit: 512M , Points: 100 (partial)
Cho đồ thị gồm đỉnh
và
cạnh hai chiều có trọng số. Hãy đếm số cạnh thỏa mãn khi mở rộng cạnh đó thêm
đơn vị thì độ dài đường đi ngắn nhất từ đỉnh
đến đỉnh
tăng thêm
đơn vị.
Input
- Dòng đầu tiên chứa một số nguyên
là số lượng test case
.
- Mỗi test case bao gồm dòng đầu tiên chứa hai số nguyên
và
.
dòng tiếp theo, mỗi dòng bao gồm ba số nguyên
,
và
biểu thị cạnh nối hai đỉnh
và
có độ dài
. Giữa hai đỉnh bất kỳ có tối đa một cạnh nối giữa chúng, đồng thời xuất phát từ một đỉnh bất kỳ có thể đến mọi đỉnh còn lại.
- Dữ liệu đảm bảo tổng
của các test case không vượt quá
và tổng
của các test case không vượt quá
.
Output
- Với mỗi test case, dòng đầu tiên in ra số nguyên
là số lượng cạnh thỏa mãn. Dòng thứ hai in ra các chỉ số của cạnh thỏa mãn theo thứ tự tăng dần, các chỉ số cạnh được đánh số từ
.
Samples
Sample Input
3
6 6
1 2 2
1 3 2
2 4 2
3 5 2
4 5 1
5 6 2
6 6
1 2 2
1 3 2
2 4 2
3 5 2
4 5 3
5 6 2
6 7
1 2 2
1 3 2
2 4 2
3 5 2
4 5 1
5 6 2
1 6 7
Sample Output
2
2 4
0
3
2 4 6
Scoring
- Subtask
với
số điểm:
- Subtask
với
số điểm: Giữa hai đỉnh
và
có cạnh nối với độ dài lớn hơn
đơn vị so với đường đi ngắn nhất giữa hai đỉnh này.
- Subtask
với
số điểm: Không còn ràng buộc gì thêm
Clarification
Hình sau minh họa đồ thị trong test case đầu tiên:
Mở rộng cạnh số (nối đỉnh
) hoặc cạnh số
(nối đỉnh
) sẽ làm tăng độ dài đường đi ngắn nhất từ đỉnh
đến đỉnh
thêm
đơn vị.
Comments