요원
시간 제한1초메모리 제한128 MB
서로 싫어하는 관계 그래프에서 최대 세 명의 특별한 에이전트를 통해 모든 정점을 세 개 이하의 독립 집합으로 색칠할 수 있는지 판정하고, 사전순으로 가장 작은 색 배정을 출력한다.
문제
어느 비밀 조직은 모든 요원을 팀에 배정해야 합니다. 일부 요원 쌍은 서로 함께 일할 수 없으므로, 같은 팀 안에 서로 싫어하는 요원 쌍이 들어가서는 안 됩니다. 임무의 특성상 요원은 최대 세 개의 팀으로만 나눌 수 있습니다.
조직에는 특별히 다루기 어려운 요원이 소수 존재합니다. 이런 요원은 최소 1명, 최대 3명이며, 나머지 모든 요원은 이들 중 적어도 한 명을 싫어합니다. 이러한 구조 덕분에 유효한 분할이 존재하는지 판정하는 문제는 항상 다항 시간에 풀 수 있습니다.
요원들과 서로 함께 일할 수 없는 쌍이 주어질 때, 같은 팀에 서로 싫어하는 쌍이 없도록 요원들을 최대 세 팀으로 나눌 수 있는지 판정하고, 가능하다면 그 배정을 출력하세요.
입력
입력은 여러 개의 테스트 인스턴스로 구성됩니다.
각 인스턴스의 첫 줄에는 두 정수 와 가 공백으로 구분되어 주어집니다 (, ). 는 요원의 수이며, 요원은 부터 까지 번호가 매겨집니다. 은 서로 싫어하는 요원 쌍의 수입니다. 이어지는 개의 줄에는 각각 두 정수 과 가 주어지며 (), 이는 요원 과 가 서로 싫어함을 의미합니다. 서로 싫어하는 각 쌍은 정확히 한 번만 주어집니다.
각 인스턴스 뒤에는 빈 줄이 하나 옵니다. 입력은 두 개의 이 적힌 줄로 끝납니다.
출력
각 인스턴스마다 한 줄을 출력합니다.
같은 팀에 서로 싫어하는 쌍이 없도록 요원들을 최대 세 팀으로 나눌 수 있다면, 공백으로 구분된 개의 정수를 출력합니다. 번째 정수(는 부터 까지)는 요원 에게 배정된 팀 번호로 중 하나입니다. 유효한 배정이 여러 개라면, 팀 번호 수열이 사전순으로 가장 앞서는 것을 출력합니다.
그러한 분할이 존재하지 않으면 문자열 The agents cannot be split을 출력합니다.