만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

발타자르

시간 제한4초메모리 제한1024 MB

요약
가중치가 있는 무방향 그래프에서 길이를 2 늘렸을 때 1번 도시에서 n번 도시까지의 최단 거리가 정확히 1 늘어나는 도로를 찾습니다.
난이도

보통10점 중 7점

유형
최단 경로, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

발타자르는 휴가를 떠나기로 했다. 지금 그는 발타자르그라드에 있고, 프리모슈텐으로 가려고 한다. 가는 길에는 여러 도시를 지나야 한다. 도시는 nn개이고, 양방향 도로 mm개로 연결되어 있다. 발타자르그라드는 1번 도시이고, 프리모슈텐은 nn번 도시이다.

발타자르는 목적지까지 가는 길을 정확히 모르기 때문에 GPS를 사용한다. GPS는 가장 짧은 경로로 안내한다.

발타자르는 여행을 좋아해서, 자신이 지나가지 않는 도로라도 아무 도로에나 마법 물약을 부을 수 있다. 물약을 부은 도로의 길이는 22 킬로미터 늘어난다. 마법 물약은 한 도로에만 부을 수 있다.

발타자르는 정오 전에 프리모슈텐의 호텔 Zora에 체크인해야 하므로, 최단 경로가 너무 많이 늘어나면 곤란하다. 발타자르그라드에서 프리모슈텐까지의 최단 거리가 정확히 11 킬로미터만 늘어나도록 물약을 부을 수 있는 도로의 개수를 구하라.

입력

첫 줄에 테스트 케이스의 개수 tt가 주어진다 (1≤t≤10 0001 \le t \le 10\,000). 각 테스트 케이스의 첫 줄에는 도시의 수 nn과 도로의 수 mm이 주어진다 (2≤n≤300 0002 \le n \le 300\,000, 1≤m≤min⁡(300 000,n(n−1)2)1 \le m \le \min(300\,000, \frac{n(n-1)}{2})).

이어지는 mm개의 줄에는 정수 aia_i, bib_i, wiw_i가 주어진다 (1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i, 1≤wi≤1091 \le w_i \le 10^9). 이는 도시 aia_i와 bib_i를 잇는 길이 wiw_i의 도로가 있다는 뜻이다. 두 도시 사이에는 도로가 최대 한 개만 있다.

모든 도시는 서로 연결되어 있다. 모든 테스트 케이스에 대해 nn의 합은 300 000300\,000을 넘지 않고, mm의 합도 300 000300\,000을 넘지 않는다.

출력

첫 줄에 발타자르가 마법 물약을 부을 수 있는 도로의 개수 cc를 출력한다. 둘째 줄에는 그 도로의 번호를 오름차순으로 cc개 출력한다.

힌트

그림에 도시와 도로가 나와 있다. 도로 2 (도시 1과 3 사이) 또는 도로 4 (도시 3과 5 사이)에 물약을 부으면, 도시 1과 도시 nn 사이의 최단 거리가 1 늘어난다.

예제1

  1. 예제 1

    입력
    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
    
    예상 출력
    2
    2 4
    0
    
    3
    2 4 6