만드는 중입니다

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

평면 최대 컷

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

요약
평면 그래프의 정점을 두 집합으로 나눠, 서로 다른 집합에 속한 간선 비용의 합이 최대가 되도록 구하는 문제입니다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 분할 정복
정답자
아직 제출이 없습니다

문제

어떤 그래프에서 최소 컷을 찾는 방법은 많이들 알고 있을 것이다. 최대 컷 문제가 NP-완전이라는 사실도 알려져 있다(정확히는 절단 값이 최소 kk 이상인 컷이 존재하는지 판별하는 결정 문제가 NP-완전이다). 그러나 그래프가 특정한 형태로 제한되면 일반적인 경우보다 문제가 쉬워질 수 있다.

평면 최대 컷 문제를 생각해 보자. 무방향 그래프 GG는 정점 nn개와 간선 mm개로 이루어져 있고, 정점 집합은 V={v1,…,vn}V = \{v_1, \dots, v_n\}이다. 이 그래프는 평면 그래프이며, 그 임베딩이 주어진다. 모든 정점의 좌표는 알려져 있고, 간선을 선분으로 그렸을 때 두 간선이 내부 점을 공유하지 않는다. 간선 jj에는 정수 비용 cjc_j가 붙어 있다.

정점 집합을 서로소인 두 집합 AA와 BB로 나누되(A∪B=VA \cup B = V), 잘린 간선의 비용 합이 최대가 되도록 하라. 간선의 한쪽 끝점은 AA에, 다른 쪽 끝점은 BB에 속하면 그 간선을 잘린 간선이라고 한다.

입력

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다(1≤n≤2001 \le n \le 200, 1≤m≤10001 \le m \le 1000).

다음 nn개 줄에는 정점 ii의 좌표 xix_i와 yiy_i가 주어진다(−104≤xi,yi≤104-10^4 \le x_i, y_i \le 10^4). 두 점의 좌표는 겹치지 않는다.

다음 mm개 줄에는 간선 jj의 정보 aja_j, bjb_j, cjc_j가 주어진다(1≤aj,bj≤n1 \le a_j, b_j \le n, aj≠bja_j \ne b_j, 0≤cj≤1050 \le c_j \le 10^5). 간선 jj가 정점 aja_j와 bjb_j를 잇고 비용이 cjc_j라는 뜻이다.

출력

첫 줄에 잘린 간선 비용 합의 최댓값을 출력한다.

둘째 줄에 정수 nn개 s1,s2,…,sns_1, s_2, \dots, s_n을 출력한다. 정점 ii가 AA에 속하면 si=0s_i = 0, BB에 속하면 si=1s_i = 1이다. 답이 여럿이면 그중 아무거나 출력한다.

예제1

  1. 예제 1

    입력
    4 5
    0 0
    2 0
    0 2
    2 2
    1 2 3
    2 4 6
    3 4 4
    1 3 7
    2 3 8
    
    예상 출력
    21
    0 0 1 1