아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

퍼레이드

시간 제한5초메모리 제한512 MB

요약
각 도로를 하나씩 제거했을 때 최단 거리가 늘어나는 교차점 쌍의 수를 모든 도로에 대해 구한다.
난이도

보통10점 중 6점

유형
그래프, 최단 경로, 완전 탐색
정답자
아직 제출이 없습니다

문제

교차로 NN개와 도로 MM개로 이루어진 도시가 있다. 교차로에는 00번부터 N−1N-1번까지, 도로에는 00번부터 M−1M-1번까지 번호가 붙어 있다. 도로는 모두 양방향이고 서로 다른 두 교차로를 잇는다. 두 교차로를 잇는 도로는 많아야 하나다. 도시는 전부 이어져 있어서 어느 교차로에서든 도로를 따라 다른 교차로로 갈 수 있다.

시장은 도로 하나를 골라 그 도로에서 퍼레이드를 연다. 퍼레이드가 열리는 동안 그 도로는 지나갈 수 없다.

도시에는 교차로 쌍 (X,Y)(X, Y)마다 XX와 YY를 오가는 버스 노선이 하나씩 있고, 노선은 모두 N(N−1)/2N(N-1)/2개다. 퍼레이드가 열리는 도로를 뺀 그래프에서 구한 XX와 YY 사이 최단 거리가 원래 최단 거리보다 길어지면 그 노선은 퍼레이드에 영향을 받는다. 퍼레이드 때문에 XX에서 YY로 갈 수 없게 되는 경우도 영향을 받는 것으로 센다.

각 도로에서 퍼레이드를 열었을 때 영향을 받는 버스 노선이 몇 개인지 도로마다 구하는 프로그램을 작성하시오.

입력

첫째 줄에 교차로의 개수 NN (1≤N≤1001 \le N \le 100)과 도로의 개수 MM (1≤M≤20001 \le M \le 2000)이 주어진다.

둘째 줄부터 MM개 줄에 00번 도로부터 M−1M-1번 도로까지 순서대로 도로의 정보가 주어진다. 각 줄에는 세 정수 from, to, time이 주어지며, from번 교차로와 to번 교차로를 오가는 데 time만큼 걸린다는 뜻이다. 두 교차로 번호는 00 이상 N−1N-1 이하이고 서로 다르며, 걸리는 시간은 11 이상 10001000 이하다.

출력

00번 도로부터 M−1M-1번 도로까지, 각 도로에서 퍼레이드가 열렸을 때 영향을 받는 버스 노선의 개수를 공백으로 구분해 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    3 2
    0 1 1
    1 2 1
    
    예상 출력
    2 2
    
  2. 예제 2

    입력
    4 3
    0 1 2
    1 2 4
    2 3 6
    
    예상 출력
    3 4 3
    
  3. 예제 3

    입력
    5 10
    0 1 1
    0 2 2
    0 3 3
    0 4 4
    1 2 5
    1 3 6
    1 4 7
    2 3 8
    2 4 9
    3 4 10
    
    예상 출력
    4 4 4 4 0 0 0 0 0 0
    
  4. 예제 4

    입력
    5 10
    0 1 1
    0 2 2
    0 3 1
    0 4 2
    1 2 1
    1 3 2
    1 4 1
    2 3 2
    2 4 1
    3 4 2
    
    예상 출력
    1 0 1 0 1 0 1 1 1 1
    
  5. 예제 5

    입력
    3 3
    0 1 1
    1 2 2
    2 0 3
    
    예상 출력
    1 1 0