만드는 중입니다

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

호반우가 학교에 지각한 이유 4

면접 대비

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

요약
N마리의 왕 슬라임과 M개의 아이템이 주어질 때, 아이템을 차례로 사용한 뒤의 전체 슬라임 수를 구합니다. 합칠 때마다 생기는 미니 슬라임도 포함합니다.
난이도

보통10점 중 4점

유형
유니온 파인드, 구현
정답자
아직 제출이 없습니다

문제

사실 호반우가 이세계에 도착한 순간부터 그의 이세계 모험은 생방송 플랫폼 트위치를 통해 지구에서 방송되고 있었다.

지금 방송 화면에는 호반우가 킹 슬라임 NN마리가 있는 던전을 탐험하려는 모습이 나오고 있다. 모든 킹 슬라임은 서로 다른 슬라임 그룹에 속해 있고, 번호는 11번부터 NN번까지 붙어 있다.

방송의 유일한 시청자인 상호는 TWIP의 슬롯머신을 MM번 돌려, 호반우가 던전을 탐험하기 전에 슬라임 그룹들을 합치려 한다.

슬롯머신을 돌리면 1≤a<b≤N1 \le a < b \le N을 만족하는 양의 정수 쌍 a,ba, b가 적힌 아이템이 나온다. 이 아이템은 인벤토리에 저장해 두었다가 슬라임 그룹을 합치는 데 사용할 수 있다.

인벤토리에서 a,ba, b가 적힌 아이템을 소비하면 aa번 킹 슬라임이 속한 그룹과 bb번 킹 슬라임이 속한 그룹을 합칠 수 있다. 다만 두 킹 슬라임이 이미 같은 그룹에 속해 있다면 합쳐지지 않는다. 두 그룹이 합쳐지면 합쳐진 그룹의 킹 슬라임 마릿수에서 1을 뺀 만큼의 미니 슬라임이 만들어진다.

상호는 슬롯머신을 돌린 횟수에 따라 던전에 슬라임(킹 슬라임과 미니 슬라임)을 최대 몇 마리까지 만들 수 있을지 궁금해졌다. 스트리머로서 유일한 시청자인 상호에게 답을 알려 주자.

입력

첫 번째 줄에 슬라임의 수 NN과 슬롯머신을 돌린 횟수 MM이 공백으로 구분되어 주어진다. (2≤N≤200 0002 \le N \le 200\,000, 1≤M≤300 0001 \le M \le 300\,000)

두 번째 줄부터 MM개의 줄에 걸쳐 슬롯머신에서 나온 아이템에 적힌 양의 정수 쌍 a,ba, b가 공백으로 구분되어 순서대로 주어진다. (1≤a<b≤N1 \le a < b \le N)

출력

MM개의 줄에 답을 한 줄씩 출력한다. ii번째 줄에는 슬롯머신을 1번부터 ii번까지 돌려 얻은 아이템을 모두 사용했을 때, 던전에 있을 수 있는 슬라임 마릿수의 최댓값을 출력한다.

힌트

입출력의 양이 많으므로 빠른 입출력을 사용하는 것을 권장합니다. 언어별 빠른 입출력 방법은 아래를 참고해 주세요.

  • C++: cin과 cout을 쓰는 경우 입출력 전에 cin.tie(nullptr); ios::sync_with_stdio(false);를 한 번 적용해야 합니다. 줄을 바꿀 때는 endl 대신 '\n'을 사용해야 합니다.
  • Java: BufferedReader와 BufferedWriter를 사용해야 합니다.
  • Python3, PyPy3: input() 대신 sys.stdin.readline().rstrip()을 사용해야 합니다.

예제2

  1. 예제 1

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

    입력
    9 6
    1 2
    2 3
    6 7
    4 9
    3 4
    2 8
    
    예상 출력
    10
    12
    13
    14
    20
    25