아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

새로운 주 나누기

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

요약
정점 1과 n을 서로 다른 편에 두고 그래프를 둘로 나눌 때, 잘린 간선들의 가중치를 XOR한 값이 최대가 되도록 만드는 문제이다.
난이도

어려움10점 중 8점

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

문제

테헤란 주를 알보르즈 주와 뉴테헤란 주 두 개로 나누기로 했다. 옛 테헤란 주에는 도시가 많이 있고, 각 도시는 두 새 주 가운데 한 곳에 속한다. 어느 쪽에 넣을지는 두 주 사이를 오가는 이동의 안전도로 판단한다.

아미르는 옛 테헤란 주의 지도를 받았다. 지도에는 도시와 도로, 그리고 도로마다 정해진 안전도가 적혀 있다. 아미르는 모든 도시를 뉴테헤란과 알보르즈 중 한 곳에 배정한다. 두 도시는 이미 정해져 있다. 테헤란은 뉴테헤란에, 카라지는 알보르즈에 속한다. 한 주가 연결되어 있지 않아도 되므로, 같은 주에 속한 도시라도 서로 오갈 수 없을 수 있다.

아미르는 가장 안전한 분할을 원한다. 분할의 안전도는 드론으로 측정한다. 드론은 두 주 사이를 날면서, 양 끝 도시가 서로 다른 주에 속하는 양방향 도로를 모두 정확히 한 번씩 지난다. 도로를 지날 때마다 그 도로의 안전도를 읽어 전체 안전도를 갱신한다. 도로의 안전도는 센서가 60비트 이진수로 저장하고, 드론도 전체 안전도를 60비트 이진수로 저장한다. 안전도가 x60x59…x1x_{60}x_{59}\dots x_1인 도로를 지나면, 전체 안전도의 ii번째 비트는 xix_i가 1일 때 뒤집히고 아니면 그대로 남는다. 드론이 비행을 마쳤을 때의 전체 안전도가 그 분할의 안전도다. 전체 안전도는 0에서 시작하므로, 두 주를 잇는 도로가 하나도 없으면 값이 바뀌지 않아 분할의 안전도는 0이다.

옛 테헤란 주에는 도시가 nn개 있고 1번부터 nn번까지 번호가 붙어 있다. 테헤란이 1번 도시, 카라지가 nn번 도시다. 어떤 분할로 얻을 수 있는 전체 안전도의 최댓값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 도시의 수 nn과 도로의 수 mm이 주어진다 (2≤n≤1002 \le n \le 100, 1≤m≤n(n−1)/21 \le m \le n(n-1)/2). 다음 mm개 줄에는 각각 세 정수 uu, vv, rr가 주어진다 (1≤u,v≤n1 \le u, v \le n, u≠vu \ne v, 0≤r<2600 \le r < 2^{60}). 도시 uu와 도시 vv를 잇는 도로가 있고 그 안전도가 rr라는 뜻이다. 두 도시 사이를 잇는 도로는 많아야 하나다. 마지막 줄에는 0이 두 개 주어지며, 이 줄은 테스트 케이스가 아니다.

출력

각 테스트 케이스마다 전체 안전도의 최댓값을 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    3 3
    1 2 1
    2 3 10
    1 3 2
    4 1
    2 3 47
    0 0
    
    예상 출력
    8
    47
    
  2. 예제 2

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

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

    입력
    4 3
    1 2 1
    2 3 2
    3 4 4
    0 0
    
    예상 출력
    7