func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Point {     double x, y;     int num;     Point() {}     Point(double _x, double _y, int _num) : x(_x), y(_y), num(_num) {}     void read() { scanf( %lf%lf , &x, &y); }     double operator*(const Point &a) const { return x * a.y - a.x * y; }     Point operator-(const Point &a) const { return Point(x - a.x, y - a.y, num); }     bool operator<(const Point &a) const {       return y < a.y || y == a.y && x < a.x;     }     bool operator==(const Point &a) const { return x == a.x && y == a.y; }   } a[2000], s;   int sum = 0, cnt = 0, n, ans[2000], sz[2000];   int des[4000], nxt[4000], fst[2000];   int c[2000], nxtc[2000], fstc[2000];   bool vis[2000];   void add(int x, int y) { des[++sum] = y, nxt[sum] = fst[x], fst[x] = sum; }   void add2(int x, int y) { c[++cnt] = y, nxtc[cnt] = fstc[x], fstc[x] = cnt; }   void tree(int x) {     vis[x] = 1;     sz[x] = 1;     for (int i = fst[x]; i; i = nxt[i])       if (!vis[des[i]]) tree(des[i]), add2(x, des[i]), sz[x] += sz[des[i]];   }   double cross(Point a, Point b, Point c) { return (a - c) * (b - c); }   bool cmp(Point i, Point j) {     if (i == s) return 1;     if (j == s) return 0;     double y = cross(i, j, s);     if (y < 0) return 0;     return 1;   }   void solve(vector<Point> b, int fa) {     s = b[0];     for (int i = 1; i < b.size(); ++i)       if (b[i] < s) s = b[i];     sort(b.begin(), b.end(), cmp);     int l = 1;     ans[s.num] = fa;     for (int i = fstc[fa]; i; i = nxtc[i]) {       int k = c[i];       vector<Point> m;       for (int j = 1; j <= sz[k]; ++j) m.push_back(b[l]), l++;       solve(m, k);     }   }   int main() {     scanf( %d , &n);     for (int i = 1; i < n; ++i) {       int x, y;       scanf( %d%d , &x, &y);       add(x, y), add(y, x);     }     memset(vis, 0, sizeof vis);     tree(1);     vector<Point> b;     for (int i = 1; i <= n; ++i) a[i].read(), a[i].num = i, b.push_back(a[i]);     solve(b, 1);     for (int i = 1; i <= n; ++i) printf( %d  , ans[i]);     return 0;   }   