RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01405

프로젝트 임계 경로

Gold III 골드 III
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

개발팀 '리세'는 \(N\)개의 작업으로 이루어진 프로젝트를 수행한다. 작업 \(i\)\(d_i\)의 시간이 걸린다. \(M\)개의 선후 관계 \((u, v)\)는 작업 \(u\)가 완전히 끝난 뒤에야 작업 \(v\)를 시작할 수 있음을 의미한다. 선후 관계에 사이클이 없다면 작업을 병렬로 최대한 활용할 수 있다.

각 작업 \(i\)에 대해, 시점 \(0\)으로부터 작업 \(i\)최대한 빨리 완료될 수 있는 시각을 구하여라. 선후 관계에 사이클이 있으면 \(-1\)을 출력한다.

모든 작업은 선행 작업이 끝나는 즉시 동시에 시작할 수 있다 (무한한 병렬 실행 가능).

제약
  • \(1 \le N \le 200\,000\)
  • \(0 \le M \le 300\,000\)
  • \(1 \le d_i \le 10^6\)
  • \(1 \le u, v \le N\), \(u \ne v\)
  • 같은 선후 관계가 중복 입력될 수 있다.
입력 형식

첫째 줄에 작업의 수 \(N\)과 선후 관계의 수 \(M\)이 공백으로 구분되어 주어진다.

둘째 줄에 각 작업의 소요 시간 \(d_1, d_2, \ldots, d_N\)이 공백으로 구분되어 주어진다.

다음 \(M\)개의 줄에 선후 관계 \(u\), \(v\)가 공백으로 구분되어 주어진다.

출력 형식

사이클이 없으면 \(N\)개의 줄에 걸쳐, \(i\)번째 줄에 작업 \(i\)의 최조 완료 시각을 출력한다. 사이클이 있으면 \(-1\)을 출력한다.

예제 1
입력
3 2
3 2 4
2 3
1 2
출력
3
5
9
설명

작업 \(1\)은 시간 \(3\)에 완료. 작업 \(2\)\(1\) 완료 후 시작: \(3 + 2 = 5\)에 완료. 작업 \(3\)\(5 + 4 = 9\)에 완료.

예제 2
입력
4 4
5 3 7 2
2 4
1 2
1 3
3 4
출력
5
8
12
14
설명

\(1\)(\(5\))→\(2\): 완료 \(8\), \(1\)(\(5\))→\(3\): 완료 \(12\). 작업 \(4\)\(2\)\(3\) 모두 끝나야 하므로 \(12 + 2 = 14\). 임계 경로: \(1 \to 3 \to 4\).

문제 정보

riseoj 작성

출처 Original

평가 및 의견

프로젝트 임계 경로

개요
출제자 난이도 Gold III 골드 III 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

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

풀이 제출

프로젝트 임계 경로

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