트리 이사

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

요약
트리의 모든 정점을 정수 격자에 옮기되 임의의 두 정점 사이의 맨해튼 거리가 트리 거리와 같아지도록 하는 최소 차원과 좌표를 구한다.
난이도

어려움10점 중 8점

유형
트리, 그래프, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

정점 NN개와 간선 N−1N-1개로 이루어진 트리 TT가 주어진다. 정점은 11번부터 NN번까지 번호가 매겨져 있고, 간선은 11번부터 (N−1)(N-1)번까지 번호가 매겨져 있다.

TT의 모든 정점을 DD차원 정수 격자 ZD\mathbb{Z}^D 위의 점으로 이사시키고자 한다. 이때, 이사된 정점들의 위치는 다음 조건을 만족해야 한다.

  • ii번 정점이 이사된 위치를 (x_i,1,x_i,2,⋯ ,x_i,D)(x\_{i,1},x\_{i,2},\cdots ,x\_{i,D})라 하자. x_i,jx\_{i,j}는 정수이다.
  • 트리에서 ii번 정점과 jj번 정점의 거리 dist(i,j)\text{dist}(i,j)를 ii번 정점에서 jj번 정점으로 가는 경로에 있는 간선의 수로 정의하자.
  • 모든 1≤i\<j≤N1\le i\<j\le N에 대해서 ∣x_i,1−x_j,1∣+∣x_i,2−x_j,2∣+⋯+∣x_i,D−x_j,D∣=dist(i,j)|x\_{i,1}-x\_{j,1}|+|x\_{i,2}-x\_{j,2}|+\cdots +|x\_{i,D}-x\_{j,D}|=\text{dist}(i,j)여야 한다.

트리를 이사할 수 있는 최소 차원 DD를 구하고, 조건을 만족하도록 정점들을 이사시키자.

입력

첫째 줄에 트리의 정점 수 NN이 주어진다. (2≤N≤2,0002\le N\le 2\\, 000)

이후 N−1N-1개의 줄에 걸쳐, 그중 ii번째 줄에는 트리의 ii번 간선이 잇는 두 정점 번호가 공백으로 구분되어 주어진다.

출력

첫째 줄에 트리를 이사할 수 있는 최소 차원 DD를 출력한다.

이후 NN개의 줄에 걸쳐, 그중 ii번째 줄에 DD개의 정수 x_i,jx\_{i,j}를 공백으로 구분해 출력한다. (1≤j≤D1\le j\le D)

x_i,jx\_{i,j}는 ii번 정점이 이사되는 격자점의 jj번째 좌표를 의미하며 −109≤x_i,j≤109-10^9\le x\_{i,j}\le 10^9이어야 한다.

트리를 여러 방법으로 이사시킬 수 있는 경우 그중 아무 것이나 출력한다.

예제1

  1. 예제 1

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