최고의 간선

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

정점이 NN개이고, 간선이 MM개인 단방향 그래프가 주어집니다. 간선은 입력에서 주어지는 순서대로 11번부터 MM번까지의 번호가 붙어 있습니다. 

소영이는 많은 정점 쌍들을 최단 거리로 빠르게 연결하고 있는 간선들이 기특하다는 생각이 들었습니다. 그래서 간선들에 각각 점수를 매긴 뒤, 가장 점수가 높은 간선들에게 최고의 간선 상을 수여하려고 합니다. 간선의 점수는 아래와 같은 방식으로 계산합니다.

  • 어떤 정점 SS에서 정점 EE로 가는 최단 경로가 존재한다면, 그 최단 경로에 포함되는 모든 간선은 각각 11점을 얻습니다. 모든 정점 쌍에 대해, 경로가 존재한다면 최단 경로가 유일한 데이터만 입력으로 주어집니다.
  • 만약 정점 SS에서 정점 EE로 가는 경로가 존재하지 않는다면, 정점 쌍 (S,E)(S, E) 에 대해서는 모든 간선이 점수를 받지 못합니다.
  • SES \neq E 이고 1S,EN1 \le S, E \le N을 만족하는 모든 정점 쌍 (S,E)(S, E) 에서의 점수 합이 간선의 최종 점수가 됩니다.

소영이는 점수가 같은 간선이 여러 개가 있다면, 최고 점수를 기록한 모든 간선들에게 상을 주려고 합니다. 어떤 간선들이 최고의 간선 상을 받게 될지를 구해봅시다.

입력

첫 번째 줄에는 두 개의 정수 NNMM이 공백으로 구분되어 주어집니다. (2N2×103,1Mmin(N×(N1), 5×103))(2 \le N \le 2 \times 10^3, 1 \le M \le min(N\times (N-1),\ 5 \times 10^3))

다음 MM개의 줄에는 ii 번째 간선의 시작 정점 u_iu\_i와 도착 정점 v_iv\_i, 그리고 간선의 길이 w_iw\_i가 공백으로 구분되어 주어집니다. 같은 정점 쌍을 연결하는 서로 다른 간선이 존재하지 않고, 시작 정점과 도착 정점이 같은 간선은 주어지지 않습니다. (1u_i,v_iN,u_iv_i,1w_i109)( 1 \le u\_i, v\_i \le N, u\_i \neq v\_i, 1 \le w\_i \le 10^9)

출력

첫 번째 줄에는 상을 받게 될 간선의 수를 출력합니다.

두 번째 줄에는 상을 받게 될 간선의 번호를 작은 것부터 순서대로 공백으로 구분하여 출력합니다.