완전 삼분 그래프
면접 대비시간 제한2초메모리 제한1024 MB
무방향 그래프의 정점을 세 집합으로 나눕니다. 각 집합 안에는 간선이 없고, 서로 다른 두 집합의 모든 정점 쌍이 간선으로 이어져야 합니다. 불가능하면 -1을 출력합니다.
문제
무방향 단순 그래프가 주어진다. 정점 수는 이고 간선 수는 이다. 그래프에는 자기 루프가 없으며, 두 정점 사이의 간선은 많아야 하나이다. 그래프는 연결되어 있지 않을 수도 있다.
공집합이 아니고 서로소인 정점 집합 , 에 대해, 다음 세 조건을 모두 만족할 때 가 참이라고 정의한다.
- 의 두 정점을 양 끝점으로 하는 간선이 없다.
- 의 두 정점을 양 끝점으로 하는 간선이 없다.
- 의 임의의 정점 와 의 임의의 정점 사이에 간선이 있다.
다음 조건을 만족하는 정점 집합 , , 을 만들어라.
- 세 집합은 모두 공집합이 아니다.
- 각 정점은 세 집합 중 정확히 하나에 속한다.
- , , 이 모두 참이다.
이런 집합을 만들 수 있는지 판단한다. 만들 수 있다면 각 정점이 속한 집합 번호를 출력한다.
입력
첫 줄에 정점 수 과 간선 수 이 주어진다 (, ). 이어지는 개의 줄에는 각각 두 정수 , 가 주어지며, 와 사이에 간선이 있음을 뜻한다 (). 그래프에는 자기 루프가 없고, 두 정점 사이의 간선은 많아야 하나이다.
출력
조건을 만족하는 배정이 존재하면 정수 개를 출력한다. 번째 정수는 번 정점이 속한 집합 번호(1부터 3까지)이다. 존재하지 않으면 -1을 출력한다. 답이 여러 개이면 아무거나 출력해도 된다.
힌트
첫 번째 예시에서 , , 이면 모든 조건을 만족한다. 다른 방식으로 배정해도 된다. "2 3 3 1 1 1"과 같은 답도 정답으로 인정된다.

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