만드는 중입니다

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

4색 정리

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

요약
평면 그래프와 금지된 색 쌍 최대 6개가 주어질 때, 간선으로 이어진 두 정점에 금지된 색 쌍이 놓이지 않도록 4색 칠하기를 찾거나 -1을 출력합니다.
난이도

어려움10점 중 9점

유형
그래프, 구현
정답자
아직 제출이 없습니다

문제

아래 조건을 만족하는 그래프 GG가 주어진다.

  • GG의 정점은 NN개, 간선은 MM개이며, 정점에는 11번부터 NN번까지 정수 번호가 매겨져 있다.

  • 다음 과정으로 그린 그림의 선분은 원의 둘레를 제외한 원의 내부에서 교차하지 않는다.

    1. 원을 그리고, 원 위에 일정한 간격으로 NN개의 점을 찍는다. 이 점을 순서대로 A1A_1, ⋯\cdots, ANA_N이라 하자.
    2. GG에서 uu번 정점과 vv번 정점이 연결되어 있다면, 점 AuA_u와 점 AvA_v를 선분으로 잇는다.

예를 들어, N=4N=4, M=4M=4일 때 조건을 만족하는 그래프는 다음과 같다.

N = 4, M = 4일 때 조건을 만족하는 그래프

반면, 다음은 조건을 만족하는 그래프가 아니다.

조건을 만족하지 않는 그래프

그래프 GG를 색칠한다는 것은 간선으로 연결된 두 정점의 색이 서로 다르도록 모든 정점에 색을 부여하는 것이다.

입력 조건을 만족하는 그래프는 어떤 것이든 4개의 색으로 항상 색칠할 수 있다.

색칠에 쓰는 서로 다른 4개의 색을 각각 11, 22, 33, 44라고 하자.

44 이하의 양의 정수로 이루어진 서로 다른 KK개의 순서쌍 (cj,dj)(c_j,d_j)가 주어진다. 색이 cjc_j인 정점과 색이 djd_j인 정점을 잇는 간선이 없도록 GG를 색칠하여라.

입력

첫 줄에 정점 수 NN, 간선 수 MM, 순서쌍 수 KK가 공백을 사이에 두고 주어진다. (3≤N≤200 0003 \le N \le 200\,000; 1≤M≤400 0001 \le M \le 400\,000; 0≤K≤60 \le K \le 6)

1≤i≤M1 \le i \le M에 대해, (i+1)(i+1)번째 줄에는 간선 정보 uiu_i, viv_i가 공백을 사이에 두고 주어진다. (1≤ui<vi≤N1 \le u_i < v_i \le N; 1≤i1<i2≤M1 \le i_1 < i_2 \le M이면 (ui1,vi1)≠(ui2,vi2)(u_{i_1},v_{i_1}) \ne (u_{i_2},v_{i_2})) 이는 GG의 uiu_i번 정점과 viv_i번 정점이 연결되어 있다는 뜻이다.

1≤j≤K1 \le j \le K에 대해, (M+j+1)(M+j+1)번째 줄에는 cjc_j, djd_j가 주어진다. (1≤cj<dj≤41 \le c_j < d_j \le 4; 1≤j1<j2≤K1 \le j_1 < j_2 \le K이면 (cj1,dj1)≠(cj2,dj2)(c_{j_1},d_{j_1}) \ne (c_{j_2},d_{j_2}))

출력

조건을 만족하도록 색칠할 수 없다면 첫 줄에 -1만 출력한다.

조건을 만족하도록 색칠할 수 있다면 첫 줄에 NN개 정점의 색을 1번 정점부터 차례로 공백을 사이에 두고 출력한다.

예제2

  1. 예제 1

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

    입력
    3 3 5
    1 2
    2 3
    1 3
    1 3
    1 4
    2 3
    2 4
    3 4
    
    예상 출력
    -1