미스터리 그래프 색칠

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

정점 VV개와 간선 EE개로 이루어진 무방향 그래프 GG가 있다. 각 정점에 00 이상 XX 미만의 정수를 하나씩 붙이되, 한 간선의 두 끝점에는 서로 다른 수가 붙어야 한다. 이 수를 색이라고 부른다.

조건을 만족하는 색칠은 여러 가지이므로, 답은 아래 절차가 만드는 색칠 하나로 정한다. 절차는 정점을 00번부터 V1V-1번까지 차례로 보면서, 이미 색이 정해진 이웃이 쓰지 않은 색 중 가장 작은 색을 그 정점에 붙인다. 절차는 실행하는 동안 counter 변수를 아래와 같이 늘린다.

counter = 0
color[0..V-1] = -1
for i = 0 to V-1:
    used = empty set
    for each j in adj[i]:
        counter = counter + 1
        if color[j] != -1:
            add color[j] to used
    for c = 0 to V-1:
        counter = counter + 1
        if c is not in used:
            color[i] = c
            break

adj[i]는 정점 ii와 간선으로 이어진 정점의 목록이다. 이웃을 정확히 한 번씩 세므로 목록의 순서는 색칠 결과도, counter의 최종 값도 바꾸지 않는다. XX는 절차가 쓴 색의 개수, 곧 color 값의 최댓값에 11을 더한 값이다.

입력

첫째 줄에 VVEE가 공백으로 구분되어 주어진다. 다음 EE개 줄에는 간선의 두 끝점을 나타내는 aabb가 주어진다.

  • 1V10001 \le V \le 1000
  • 0E1000000 \le E \le 100000
  • 모든 간선 (a,b)(a, b)에 대해 aba \ne b이고, 0a<V0 \le a < V, 0b<V0 \le b < V이다.
  • 같은 간선은 두 번 이상 주어지지 않는다. (a,b)(a, b)(b,a)(b, a)는 같은 간선이다.

출력

첫째 줄에 XX를 출력한다. 둘째 줄에는 00번 정점부터 V1V-1번 정점에 붙인 색을 공백 하나로 구분해 출력한다. 셋째 줄에는 The value of counter is: 다음에 공백 하나를 두고 counter의 최종 값을 출력한다.