만드는 중입니다

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

연세 마스크 공장

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

요약
각 통로가 나르는 마스크 양을 최소 s_i와 최대 e_i 사이에서 정해, 모든 공장의 보유량이 매초 변하지 않게 할 수 있는지 구합니다.
난이도

보통10점 중 6점

유형
그래프, BFS, DFS
정답자
아직 제출이 없습니다

문제

연세대는 코로나 19에 대비하기 위해 마스크 공장을 만들었다.

공장에는 마스크를 생산하는 NN개의 공간이 있고, 이들을 잇는 MM개의 단방향 통로가 있다. 지하 공간도 있어서 각 공간에 마스크를 보내거나 각 공간으로부터 마스크를 받는다. 서로 다른 두 공간 사이에 두 개 이상의 통로가 있는 경우와, 같은 공간을 잇는 통로가 있는 경우는 없다.

각 공간 ii에는 정수 pip_i가 할당되어 있다. pip_i가 양수이면 지하 공간으로부터 매 초 pip_i개의 마스크를 받는다. 음수이면 매 초 −pi-p_i개의 마스크를 지하 공간으로 보낸다. 각 통로 ii에는 매 초 보내야 하는 마스크의 최소 개수 sis_i와 보낼 수 있는 최대 개수 eie_i가 주어진다.

마스크를 생산하는 공간과 지하 공간은 매 초 마스크를 주고받은 뒤에도 보관 중인 마스크의 개수가 변하지 않아야 한다.

이 조건을 만족할 때 각 통로가 매 초 보내야 하는 마스크의 개수를 구하라.

입력

입력은 다음과 같이 주어진다.

N M
p_1 ... p_N
u_1 v_1 s_1 e_1
...
u_M v_M s_M e_M

출력

첫 번째 줄에 답이 있으면 1, 없으면 -1을 출력한다.

답이 있으면 MM개의 줄에 걸쳐 통로 ii가 매 초 보내야 하는 마스크의 개수를 번호 순서대로 출력한다. 답이 여러 개이면 그중 아무 것이나 출력해도 된다.

제한

  • 1≤N≤2001 \le N \le 200.
  • 0≤M≤min⁡(N(N−1)2,1000)0 \le M \le \min(\frac{N(N-1)}{2},1000)
  • −10,000,000×max⁡(min⁡(N−1,M),1)≤pi≤10,000,000×max⁡(min⁡(N−1,M),1)-10{,}000{,}000 \times \max(\min(N-1, M), 1) \le p_i \le 10{,}000{,}000 \times \max(\min(N-1, M), 1)
  • 1≤ui,vi≤N1 \le u_i, v_i \le N, ui≠viu_i \ne v_i (1≤i≤M1 \le i \le M)
  • 0≤si≤ei≤10,000,0000 \le s_i \le e_i \le 10{,}000{,}000 (1≤i≤M1 \le i \le M)

예제5

  1. 예제 1

    입력
    6 6
    -2 2 -2 2 -2 2
    1 2 2 4
    2 3 4 6
    3 4 3 5
    4 5 5 7
    5 6 1 3
    6 1 3 5
    
    예상 출력
    1
    3
    5
    3
    5
    3
    5
    
  2. 예제 2

    입력
    6 6
    -2 2 -2 2 -2 2
    1 2 2 4
    2 3 4 6
    3 4 3 5
    4 5 5 7
    5 6 1 2
    6 1 3 5
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    1 0
    0
    
    예상 출력
    1
    
  4. 예제 4

    입력
    1 0
    1
    
    예상 출력
    -1
    
  5. 예제 5

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