포럼
문제 COCI00090

Najkraci

설명

어떤 나라의 도로망은 \(N\)개의 도시와 \(M\)개의 일방통행 도로로 이루어져 있다. 도시에는 \(1\)부터 \(N\)까지 번호가 붙어 있다. 각 도로에 대해 출발 도시와 도착 도시, 그리고 길이를 알고 있다.

도로 \(E\)의 도착 도시가 도로 \(F\)의 출발 도시와 같으면, 도로 \(F\)는 도로 \(E\)의 연속이라고 한다. 도시 \(A\)에서 도시 \(B\)로 가는 경로란, 첫 도로의 출발지가 도시 \(A\)이고 나머지 각 도로가 바로 앞 도로의 연속이며 마지막 도로의 도착지가 도시 \(B\)인 도로들의 나열이다. 경로의 길이는 경로에 포함된 모든 도로의 길이의 합이다.

\(A\)에서 \(B\)로 가는 어떤 경로에 대해, \(A\)에서 \(B\)로 가는 더 짧은 다른 경로가 없으면 그 경로를 최단 경로라고 한다.

각 도로에 대해, 그 도로를 포함하는 서로 다른 최단 경로가 몇 개인지 \(1\,000\,000\,007\)로 나눈 나머지를 출력하는 것이 여러분의 과제이다.

제약
입력 형식

첫째 줄에 두 정수 \(N\)\(M\) (\(1 \le N \le 1500\), \(1 \le M \le 5000\))이 주어진다. 도시와 도로의 개수이다.

다음 \(M\)개의 줄에는 세 양의 정수 \(O\), \(D\), \(L\)이 주어진다. 도시 \(O\)에서 도시 \(D\)로 가는 길이 \(L\)의 일방통행 도로를 나타낸다. \(O\)\(D\)는 서로 다르며 \(L\)은 최대 \(10000\)이다.

출력 형식

\(M\)개의 정수를 한 줄에 하나씩 출력한다. 각 도로에 대해, 그 도로를 포함하는 서로 다른 최단 경로의 개수를 \(1\,000\,000\,007\)로 나눈 나머지이다. 수의 순서는 입력에서 도로가 주어진 순서와 일치해야 한다.

채점: 전체 점수의 \(30\%\)에 해당하는 테스트 케이스에서는 \(N\)이 최대 \(15\), \(M\)이 최대 \(30\)이다. 전체 점수의 \(60\%\)에 해당하는 테스트 케이스에서는 \(N\)이 최대 \(300\), \(M\)이 최대 \(1000\)이다.

서브태스크
서브태스크점수설명

Subtask 1

130점
예제 1
입력
4 3
1 2 5
2 3 5
3 4 5
출력
3
4
3
예제 2
입력
4 4
1 2 5
2 3 5
3 4 5
1 4 8
출력
2
3
2
1
예제 3
입력
5 8
1 2 20
1 3 2
2 3 2
4 2 3
4 2 3
3 4 5
4 3 5
5 4 20
출력
0
4
6
6
6
7
2
6
문제 정보

riseoj 작성

출처 COCI 2008/2009 Contest 3

평가 및 의견

Najkraci

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Najkraci

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8