만드는 중입니다

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

항공 노선도

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

요약
정점이 최대 1000개인 단순 그래프를 정점 수가 최소인 그래프로 인코딩하여, 번호가 섞인 상태에서도 원래 노선도를 복원할 수 있도록 합니다.
난이도

어려움10점 중 9점

유형
그래프, 구현, 조합론
정답자
아직 제출이 없습니다

문제

앨리스는 JOI 왕국에 살고 있다. 그녀는 IOI 공화국에 사는 밥을 초대하려고 한다. 초대하기 전에 JOI 왕국의 항공 노선도를 밥에게 보내고 싶어 한다.

JOI 왕국은 00부터 N−1N-1까지 번호가 붙은 NN개의 섬으로 이루어진 섬나라이다. 항공 노선은 MM개 있다. 각 ii (0≤i≤M−10 \le i \le M-1)에 대해, (i+1)(i+1)번째 노선은 섬 AiA_i와 섬 BiB_i를 양방향으로 잇는다. 같은 두 섬을 잇는 노선은 없다.

앨리스는 JOI 왕국이 운영하는 특수 전신기로 노선도를 보내야 한다. 이 기계는 무방향 그래프를 보낼 수 있다. 다만 전송 과정에서 정점 번호와 간선 번호가 무작위로 섞인다.

정확히 말하면 정보는 다음과 같이 전송된다. 앨리스가 보내는 그래프를 GG라 하고, GG의 정점 수를 VV, 간선 수를 UU라 하자.

  • 앨리스는 VV와 UU를 정한다. 정점에는 0,1,…,V−10, 1, \ldots, V-1을, 간선에는 0,1,…,U−10, 1, \ldots, U-1을 번호로 붙인다.
  • 앨리스는 매개변수 C0,…,CU−1C_0, \ldots, C_{U-1}과 D0,…,DU−1D_0, \ldots, D_{U-1}을 정한다. jj번째 간선은 정점 CjC_j와 정점 DjD_j를 잇는다.
  • JOI 왕국이 정점 번호를 섞는다. 0,…,V−10, \ldots, V-1의 순열 p[0],…,p[V−1]p[0], \ldots, p[V-1]을 만든 뒤, 모든 jj에 대해 CjC_j를 p[Cj]p[C_j]로, DjD_j를 p[Dj]p[D_j]로 바꾼다.
  • JOI 왕국이 간선 번호를 섞는다. 0,…,U−10, \ldots, U-1의 순열 q[0],…,q[U−1]q[0], \ldots, q[U-1]을 만든 뒤, 새 CjC_j가 옛 Cq[j]C_{q[j]}, 새 DjD_j가 옛 Dq[j]D_{q[j]}가 되도록 재배열한다.
  • 밥은 VV, UU와 최종 C0,…,CU−1C_0, \ldots, C_{U-1}, D0,…,DU−1D_0, \ldots, D_{U-1} 값을 받는다.

이 기계로는 단순 그래프만 보낼 수 있다. i≠ji \ne j이면 (Ci,Di)(C_i, D_i)는 (Cj,Dj)(C_j, D_j)와 달라야 하고, (Ci,Di)(C_i, D_i)는 (Dj,Cj)(D_j, C_j)와도 달라야 한다. 모든 ii에 대해 Ci≠DiC_i \ne D_i이어야 한다.

앨리스는 정점 수가 가장 적은 그래프로 노선도를 보내려고 한다.

두 프로그램을 작성해야 한다.

  • NN, MM, 수열 AA, BB가 주어지면, 첫 번째 프로그램은 앨리스가 보낼 그래프 GG의 정보를 출력한다.
  • 밥이 받은 그래프 GG의 정보가 주어지면, 두 번째 프로그램은 JOI 왕국의 항공 노선도를 복원한다.

입력

샘플 채점기는 표준 입력에서 다음 데이터를 읽는다.

  • 첫 줄에는 공백으로 구분된 정수 NN과 MM이 있다. JOI 왕국에는 섬이 NN개, 항공 노선이 MM개 있다.
  • 이어지는 MM줄은 노선도를 나타낸다. 그중 (i+1)(i+1)번째 줄에는 공백으로 구분된 정수 AiA_i와 BiB_i가 있다.

출력

프로그램이 오답으로 판정되면 샘플 채점기는 Wrong Answer [1] 형식으로 오답 유형을 출력하고 종료한다.

Alice 호출과 Bob 호출이 모두 오답으로 판정되지 않으면 채점기는 Accepted.를 출력한 뒤 VV의 값을 출력한다.

여러 유형의 오답에 해당하면 채점기는 그중 하나만 보고한다.

제한

  • 1≤N≤10001 \le N \le 1000.
  • 0≤M≤N(N−1)/20 \le M \le N(N-1)/2.
  • 0≤Ai≤N−10 \le A_i \le N-1 (0≤i≤M−10 \le i \le M-1).
  • 0≤Bi≤N−10 \le B_i \le N-1 (0≤i≤M−10 \le i \le M-1).
  • Ai≠BiA_i \ne B_i (0≤i≤M−10 \le i \le M-1).
  • (Ai,Bi)≠(Aj,Bj)(A_i, B_i) \ne (A_j, B_j)이고 (Ai,Bi)≠(Bj,Aj)(A_i, B_i) \ne (B_j, A_j) (0≤i<j≤M−10 \le i < j \le M-1).

예제1

  1. 예제 1

    입력
    1 0
    
    예상 출력
    1 0