만드는 중입니다

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

MST

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

요약
N개 정점의 그래프에 M개의 질의로 순환 이동된 간선 k개를 추가합니다. 최소 신장 트리의 가중치를 구하고, 없으면 -1을 출력합니다.
난이도

어려움10점 중 9점

유형
그래프, 최소 신장 트리, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

세빈이에게는 두 가지 취미가 있다. 하나는 디스크립션을 짧게 쓰는 것이고, 다른 하나는 복잡한 그래프에서 최소 스패닝 트리를 구하는 것이다.

NN개의 정점으로 이루어진 그래프가 있다. 정점에는 0부터 N−1N-1까지의 서로 다른 정수가 번호로 붙어 있다.

세빈이는 이 그래프에 다음 쿼리를 MM번 수행했다.

  • u v c k: 모든 0≤i<k0 \le i < k에 대해 (u+i) mod N(u+i) \bmod N번 정점과 (v+i) mod N(v+i) \bmod N번 정점 사이에 가중치 c+ic+i인 간선을 추가한다.

이 그래프의 최소 스패닝 트리의 가중치를 구하여라. 최소 스패닝 트리가 존재하지 않으면 -1을 출력하여라.

입력

첫째 줄에 NN과 MM이 공백을 사이에 두고 주어진다. (2≤N≤2000002 \le N \le 200000; 0≤M≤2000000 \le M \le 200000)

둘째 줄부터 MM개의 줄에 걸쳐 네 정수 uu, vv, cc, kk가 공백을 사이에 두고 주어진다. (0≤u,v<N0 \le u, v < N; 0≤c≤1090 \le c \le 10^9; 1≤k≤N1 \le k \le N; u≠vu \ne v)

출력

첫째 줄에 최소 스패닝 트리의 가중치를 구하여라. 최소 스패닝 트리가 존재하지 않으면 -1을 출력하여라.

힌트

첫 번째 예제에서, 주어진 그래프와 그래프의 최소 스패닝 트리는 다음과 같다.

그래프의 모든 정점을 포함하는 연결된 부분 그래프 중에서 간선 가중치의 합이 최소인 것을 최소 스패닝 트리라고 한다.

최소 스패닝 트리의 가중치란 최소 스패닝 트리에 포함된 간선 가중치의 합을 말한다.

예제2

  1. 예제 1

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

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