만드는 중입니다

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

포텐셜

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

요약
정점의 정수 전위를 정해 모든 간선의 w + Φu - Φv 값이 같아지게 하거나, 그럴 수 없으면 NO를 출력합니다.
난이도

보통10점 중 6점

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

문제

가중치가 있는 방향 그래프가 주어집니다. 각 정점 ii에는 포텐셜 Φi\Phi_i가 있습니다. 간선 (u,v)(u, v)의 가중치를 wuvw_{uv}라고 합니다. 새 가중치는 wuv′=wuv+Φu−Φvw'_{uv} = w_{uv} + \Phi_u - \Phi_v로 정의합니다.

모든 간선의 새 가중치 w′w'가 서로 같아지도록 하는 정수 포텐셜 Φi\Phi_i를 구하세요.

입력

첫 줄에 테스트 케이스의 개수 tt가 주어집니다.

각 테스트 케이스의 첫 줄에는 그래프의 정점 수와 간선 수를 나타내는 정수 nn과 mm이 주어집니다 (1≤n≤300 0001 \le n \le 300\,000, 0≤m≤300 0000 \le m \le 300\,000). 이어지는 mm개의 줄에는 각각 간선의 시작 정점 xix_i, 끝 정점 yiy_i, 가중치 wiw_i가 정수로 주어집니다 (1≤xi,yi≤n1 \le x_i, y_i \le n, −109≤wi≤109-10^9 \le w_i \le 10^9). 자기 루프와 중복 간선은 없습니다.

모든 테스트 케이스의 nn의 합과 mm의 합은 각각 600 000을 넘지 않습니다.

출력

각 테스트 케이스마다 정수 해가 존재하면 첫 줄에 "YES"를, 존재하지 않으면 "NO"를 출력하세요.

해가 존재하면 다음 줄에 nn개의 정수, 즉 각 정점의 포텐셜을 출력하세요. 포텐셜의 절댓값은 101810^{18}을 넘지 않아야 합니다. 해가 존재한다면 이 조건을 만족하는 해도 존재함이 보장됩니다.

답이 여러 개라면 그중 아무거나 하나를 출력하세요.

예제1

  1. 예제 1

    입력
    2
    5 4
    1 2 -1
    2 3 2
    3 4 1
    4 5 179
    5 5
    1 2 1
    2 3 1
    3 4 1
    4 5 0
    5 1 2
    
    예상 출력
    YES
    0 -1 1 2 181
    YES
    0 0 0 0 -1