만드는 중입니다

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

트리의 자기 동형 사상

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

요약
n개의 정점으로 이루어진 트리가 주어질 때, 트리의 모든 자기 동형 사상을 합성으로 만들 수 있는 n개보다 적은 자기 동형 사상을 구합니다.
난이도

보통10점 중 7점

유형
트리, DFS, 구현
정답자
아직 제출이 없습니다

문제

정점이 n개인 트리 T가 주어진다. 순열 π = π_1, π_2, ..., π_n은 임의의 정점 쌍 (u, v)에 대해 u와 v 사이에 간선이 있을 필요충분조건이 π_u와 π_v 사이에 간선이 있는 것일 때 T의 자기 동형 사상이라고 한다.

두 순열 α = α_1, α_2, ..., α_n과 β = β_1, β_2, ..., β_n의 합성 γ = α ∘ β는 γ_i = α_{β_i}로 정의한다. 즉 γ = α_{β_1}, α_{β_2}, ..., α_{β_n}이다. T의 자기 동형 사상은 합성에 대해 닫혀 있으므로, α와 β가 T의 자기 동형 사상이면 α ∘ β도 T의 자기 동형 사상이다. 이는 β를 먼저 적용한 뒤 α를 적용하는 것으로 볼 수 있다.

k < n을 만족하는 자기 동형 사상의 집합 P = {π(1), π(2), ..., π(k)}를 구하라. T의 임의의 자기 동형 사상은 P에 속한 순열들의 유한 번의 합성으로 표현할 수 있다.

입력

첫 줄에 트리의 정점 개수를 나타내는 정수 n (2 ≤ n ≤ 50)이 주어진다. 이어지는 n − 1개의 줄에는 각각 간선으로 연결된 두 정점 u_i와 v_i (1 ≤ u_i, v_i ≤ n)를 나타내는 두 정수가 주어진다.

출력

첫 줄에 P에 속한 순열의 개수 k (1 ≤ k < n)를 출력한다. 이어지는 k개의 줄에는 i번째 순열의 값 π_1(i), π_2(i), ..., π_n(i)를 각각 n개의 정수로 출력한다. 조건을 만족하는 집합 P가 여러 개라면 그중 아무것이나 출력하면 된다. 답은 항상 존재한다.

예제3

  1. 예제 1

    입력
    2
    1 2
    
    예상 출력
    1
    2 1
    
  2. 예제 2

    입력
    3
    1 2
    1 3
    
    예상 출력
    1
    1 3 2
    
  3. 예제 3

    입력
    4
    1 2
    1 3
    1 4
    
    예상 출력
    2
    1 3 2 4
    1 4 3 2