Easy Win

시간 제한1.5초메모리 제한512 MB

요약
간선이 하나씩 추가될 때마다, 고른 간선들 중 어떤 비어 있지 않은 서로소 사이클 합집합도 돌 개수의 xor이 0이 되지 않도록 하는 부분집합의 최대 가중치 합을 구한다.
난이도

어려움10점 중 9점

유형
게임 이론, 유니온 파인드, 비트 연산, 그리디
정답자
아직 제출이 없습니다

문제

V–o_o–V와 LHiC가 게임을 한다.

먼저 gritukan이 n개의 정점을 가진 무방향 그래프를 보여주는데, 각 간선 위에는 돌 더미가 하나씩 놓여 있다.

그 다음 LHiC는 이 그래프의 간선 중에서 변이 서로 겹치지 않는 단순 사이클들을 이루는 비어 있지 않은 부분집합을 고른다. 다시 말해, 각 연결 성분이 오일러 회로를 가져야 한다. 만약 그렇게 고를 수 없다면, 즉 그래프가 비순환이라면 LHiC는 즉시 진다.

그렇지 않으면 LHiC와 V–o_o–V는 고른 간선 위의 돌 더미들로 님 게임을 한다. V–o_o–V가 먼저 둔다. 한 번의 수에서 플레이어는 한 더미에서 양의 개수의 돌을 임의로 들어낼 수 있다. 수를 둘 수 없는 플레이어가 진다.

LHiC가 자신이 님 게임에서 이길 수 있는, 변이 서로 겹치지 않는 사이클들의 비어 있지 않은 부분집합을 고를 수 없는 그래프를 good이라고 하자.

gritukan은 q개의 질의를 한다. 도와줄 수 있는가?

여기서 gritukan이 good 그래프를 만들기 위해 고를 수 있는 간선 후보 집합이 있다. 처음에 이 집합은 비어 있다. i번째 질의에서 먼저 정점 ui와 vi를 잇고 돌 ai개가 놓인 간선 i가 가중치 wi와 함께 후보 집합에 추가된다. 그 다음, 간선 1, 2, . . . , i의 부분집합으로 gritukan이 만들 수 있는 good 그래프의 가중치 합의 최댓값을 구해야 한다.

입력

첫째 줄에 두 정수 n과 q가 주어진다. 이는 그래프의 정점 수와 질의의 수이다. (2 ≤ n ≤ 64, 1 ≤ q ≤ 200 000)

다음 q개의 줄에는 각각 네 정수 ui, vi, ai, wi가 주어지며, i번째 질의에서 추가되는 간선을 나타낸다. (1 ≤ ui, vi ≤ n, ui ≠ vi, 0 ≤ ai < 2^60, 1 ≤ wi ≤ 10^9)

출력

q개의 줄을 출력한다. i번째 질의에 대해서는 간선 1, 2, . . . , i의 부분집합으로 만들 수 있는 good 그래프의 가중치 합의 최댓값을 출력한다.

예제4

  1. 예제 1

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

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

    입력
    5 5
    1 2 0 1
    2 3 1 1
    3 4 2 3
    4 5 4 9
    5 1 7 29
    
    예상 출력
    1
    2
    5
    14
    42
    
  4. 예제 4

    입력
    5 1
    3 5 35 35
    
    예상 출력
    35