分治,选最左上的点分给根,剩下的极角排序后递归
C. Paint Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard outputYou are given a tree with n vertexes and n points on a plane, no three points lie on one straight line.
Your task is to paint the given tree on a plane, using the given points as vertexes.
That is, you should correspond each vertex of the tree to exactly one point and each point should correspond to a vertex. If two vertexes of the tree are connected by an edge, then the corresponding points should have a segment painted between them. The segments that correspond to non-adjacent edges, should not have common points. The segments that correspond to adjacent edges should have exactly one common point.
InputThe first line contains an integer n (1?≤?n?≤?1500) ― the number of vertexes on a tree (as well as the number of chosen points on the plane).
Each of the next n?-?1 lines contains two space-separated integers ui and vi (1?≤?ui,?vi?≤?n, ui?≠?vi) ― the numbers of tree vertexes connected by the i-th edge.
Each of the next n lines contain two space-separated integers xi and yi (?-?109?≤?xi,?yi?≤?109) ― the coordinates of thei-th point on the plane. No three points lie on one straight line.
It is guaranteed that under given constraints problem has a solution.
OutputPrint n distinct space-separated integers from 1 to n: the i-th number must equal the number of the vertex to place at the i-th point (the points are numbered in the order, in which they are listed in the input).
If there are several solutions, print any of them.
Sample test(s) input3 1 3 2 3 0 0 1 1 2 0output
1 3 2input
4 1 2 2 3 1 4 -1 -2 3 5 -3 3 2 0output
4 2 1 3Note
The possible solutions for the sample are given below.
<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;">#include