아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

그룹 나누기

면접 대비

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

요약
각 의자에 1번 또는 2번 그룹을 배정해 모든 접두사에서 두 그룹 크기 차이가 1 이하이고 짝지은 의자는 같은 그룹이 되게 하며, 사전순으로 가장 앞서는 수열을 구한다.
난이도

보통10점 중 6점

유형
그리디, 유니온 파인드, 구현, 수학
정답자
아직 제출이 없습니다

문제

수학 선생님 마리아는 다음 수업에서 학생들을 두 그룹으로 나누려고 한다. 그래서 그녀는 흔한 문제에 부딪힌다. 학생들을 어떻게 하면 합리적으로 두 그룹으로 나눌 수 있을까? 교실에는 nn명의 학생이 있고, 교실에는 11번부터 nn번까지 번호가 붙은 nn개의 의자가 있다. 학생이 교실에 도착하면 항상 가장 왼쪽에 있는 빈 의자에 앉는다. 따라서 어떤 날에 총 kk명이 오면 그들은 항상 1,2,…,k1, 2, \dots, k번 의자에 앉는다.

마리아는 학생들을 두 그룹으로 나누기 위해 사용하고 싶은 전략이 있다. 수업이 시작하기 전에 그녀는 nn개의 1과 2로 이루어진 수열 ss를 고른다. 수업이 시작되면 그녀는 각 학생에게 다가가서 ii번 의자에 앉은 학생이 sis_i번 그룹에 속하게 한다. 그룹 나누기가 합리적이려면 ss가 다음 두 조건을 만족해야 한다.

  1. 마리아는 몇 명의 학생이 올지 모르지만, 몇 명이 오든 두 그룹의 크기 차이는 11 이하여야 한다.
  2. 같은 색을 가진 의자 쌍이 mm개 있다. 그러한 의자 쌍에 학생이 앉아 있으면 그 학생들은 같은 그룹에 속해야 한다.

당신의 과제는 n,mn, m과 mm개의 의자 쌍이 주어졌을 때, 위 조건을 만족하는 수열 ss 중 사전순으로 가장 앞서는 것을 찾는 것이다. 유효한 ss가 없으면 프로그램은 −1-1을 출력해야 한다.

사전순이란 두 수열을 비교할 때 먼저 첫 번째 문자를 보고, 같으면 두 번째 문자를 보고, 이런 식으로 비교한다는 뜻이다. 예를 들어 수열 1122는 1211보다 앞서고, 1112보다 뒤에 온다.

입력

첫 번째 줄에는 두 정수 1≤n≤1051 \le n \le 10^5 (교실의 의자 수)와 0≤m≤n/20 \le m \le n/2 (같은 색을 가진 의자 쌍의 수)가 주어진다. 그다음 mm개의 줄이 주어지며, 각 줄에는 같은 색을 가진 의자 쌍을 나타내는 두 정수가 1부터 시작하는 번호로 주어진다. 각 의자는 최대 하나의 다른 의자와 같은 색을 가진다.

출력

nn개의 1 또는 2로 이루어진 수열을 공백 없이 출력한다. 유효한 해가 없으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    7 3
    2 3
    4 5
    6 7
    
    예상 출력
    1221122
    
  2. 예제 2

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

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