만드는 중입니다

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

완전 삼분 그래프

면접 대비

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

요약
무방향 그래프의 정점을 세 집합으로 나눕니다. 각 집합 안에는 간선이 없고, 서로 다른 두 집합의 모든 정점 쌍이 간선으로 이어져야 합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

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

문제

무방향 단순 그래프가 주어진다. 정점 수는 nn이고 간선 수는 mm이다. 그래프에는 자기 루프가 없으며, 두 정점 사이의 간선은 많아야 하나이다. 그래프는 연결되어 있지 않을 수도 있다.

공집합이 아니고 서로소인 정점 집합 v1v_1, v2v_2에 대해, 다음 세 조건을 모두 만족할 때 f(v1,v2)f(v_1, v_2)가 참이라고 정의한다.

  1. v1v_1의 두 정점을 양 끝점으로 하는 간선이 없다.
  2. v2v_2의 두 정점을 양 끝점으로 하는 간선이 없다.
  3. v1v_1의 임의의 정점 xx와 v2v_2의 임의의 정점 yy 사이에 간선이 있다.

다음 조건을 만족하는 정점 집합 v1v_1, v2v_2, v3v_3을 만들어라.

  1. 세 집합은 모두 공집합이 아니다.
  2. 각 정점은 세 집합 중 정확히 하나에 속한다.
  3. f(v1,v2)f(v_1, v_2), f(v2,v3)f(v_2, v_3), f(v3,v1)f(v_3, v_1)이 모두 참이다.

이런 집합을 만들 수 있는지 판단한다. 만들 수 있다면 각 정점이 속한 집합 번호를 출력한다.

입력

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다 (3≤n≤1053 \le n \le 10^{5}, 0≤m≤min⁡(3⋅105,n(n−1)2)0 \le m \le \min(3 \cdot 10^{5}, \frac{n(n-1)}{2})). 이어지는 mm개의 줄에는 각각 두 정수 aia_i, bib_i가 주어지며, aia_i와 bib_i 사이에 간선이 있음을 뜻한다 (1≤ai<bi≤n1 \le a_i < b_i \le n). 그래프에는 자기 루프가 없고, 두 정점 사이의 간선은 많아야 하나이다.

출력

조건을 만족하는 배정이 존재하면 정수 nn개를 출력한다. ii번째 정수는 ii번 정점이 속한 집합 번호(1부터 3까지)이다. 존재하지 않으면 -1을 출력한다. 답이 여러 개이면 아무거나 출력해도 된다.

힌트

첫 번째 예시에서 v1={1}v_1 = \{1\}, v2={2,3}v_2 = \{2, 3\}, v3={4,5,6}v_3 = \{4, 5, 6\}이면 모든 조건을 만족한다. 다른 방식으로 배정해도 된다. "2 3 3 1 1 1"과 같은 답도 정답으로 인정된다.

두 번째 예시는 조건을 만족하는 집합을 만들 수 없다.

예제2

  1. 예제 1

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

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