만드는 중입니다

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

마계안암

면접 대비

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

요약
각 건물에 대해 건물 1에서 최소 비용으로 도달하는 경로의 수를 구합니다. 비용이 0인 사이클로 경로가 무한히 많아지면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

태윤이는 연세대학교 과잠을 입고 안암 곳곳을 여행하려고 한다.

안암은 NN개의 건물과 MM개의 일방통행 길로 나타낼 수 있다. 각 길은 서로 다른 두 건물을 잇는다. 안암역은 11번 건물이고, 태윤이는 현재 안암역에 있다. 각 길에는 0명 이상의 고려대학교 학생이 있다.

태윤이가 길을 지나가려면 그 길에 있는 고려대학교 학생 수만큼 연세빵을 바치고 이동해야 한다. 태윤이는 빵을 최소한으로 빼앗기고 여행하고 싶어 한다. 안암역에서 각 건물까지 빵을 최소한으로 빼앗기고 도착하는 서로 다른 경로의 수를 구하자. 경로는 안암역에서 출발해 건물에 도착할 때까지 지나간 길을 순서대로 나열한 것이다. 같은 길을 여러 번 지나갈 수 있다.

안암역에서 모든 건물에 도착할 수 있음이 보장된다.

입력

첫 줄에 건물의 개수 NN이 주어진다. 둘째 줄에 길의 개수 MM이 주어진다. 이어서 MM줄에 걸쳐 ii번째 길의 정보 uiu_i viv_i wiw_i가 주어진다. 이는 ii번째 길을 통해 uiu_i번 건물에서 viv_i번 건물로 이동할 수 있고, 그 길에 wiw_i명의 고려대학교 학생이 있다는 뜻이다.

출력

NN줄에 걸쳐 각 건물에 빵을 최소한으로 빼앗기고 도착하는 서로 다른 경로의 수를 출력한다. 그러한 경로가 무수히 많다면 -1을 출력한다.

경로의 수가 무수히 많지 않은 경우에는 수가 매우 클 수 있으므로 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

제한

  • 1≤N≤100 0001 \leq N \leq 100\,000
  • 0≤M≤200 0000 \leq M \leq 200\,000
  • 0≤wi≤1090 \leq w_i \leq 10^9 (1≤i≤M)(1 \leq i \leq M)
  • ui≠viu_i \neq v_i (1≤i≤M)(1 \leq i \leq M)

예제3

  1. 예제 1

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

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

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