Mở rộng cạnh

View as PDF

Time limit: 4.0s , Memory limit: 512M , Points: 100 (partial)

Cho đồ thị gồm n đỉnh 1,2,...,nm 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 2 đơn vị thì độ dài đường đi ngắn nhất từ đỉnh 1 đến đỉnh n tăng thêm 1 đơn vị.

Input

  • Dòng đầu tiên chứa một số nguyên t là số lượng test case (1 \le t \le 10^4).
  • Mỗi test case bao gồm dòng đầu tiên chứa hai số nguyên nm (2 \le n \le 3.10^5; \; 1 \le m \le \min(3.10^5, \frac{n(n-1)}{2})).
  • m dòng tiếp theo, mỗi dòng bao gồm ba số nguyên u, vw (1 \le u,v \le n; \; u \neq v; \; 1 \le w \le 10^9) biểu thị cạnh nối hai đỉnh uv có độ dài w. 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 n của các test case không vượt quá 3.10^5 và tổng m của các test case không vượt quá 3.10^5.

Output

  • Với mỗi test case, dòng đầu tiên in ra số nguyên k 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ừ 1.

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 1 với 30\% số điểm: n,m \le 1000
  • Subtask 2 với 30\% số điểm: Giữa hai đỉnh 1n có cạnh nối với độ dài lớn hơn 1 đơn vị so với đường đi ngắn nhất giữa hai đỉnh này.
  • Subtask 3 với 40\% 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:

Ảnh minh họa

Mở rộng cạnh số 2 (nối đỉnh 1-3) hoặc cạnh số 4 (nối đỉnh 3-5) sẽ làm tăng độ dài đường đi ngắn nhất từ đỉnh 1 đến đỉnh n thêm 1 đơn vị.


Comments