#include using namespace std; typedef long long ll; typedef pair pll; vector> sus, syn; vector visited; vector subtree; bool dfs(int node) { if (visited[node]) return false; visited[node] = true; subtree[node] = 1; for (int i=0; i 0; } }; int solve(vector points, int node) { Point me = points.back(); points.pop_back(); Comp comparator(me); sort(points.begin(), points.end(), comparator); int index = 0; for (int i=0; i part; for (int j=0; j> n; sus.resize(n); for (int i=0; i> a >> b; sus[a].push_back(b); sus[b].push_back(a); } syn.resize(n); visited = vector(n, false); subtree.resize(n); dfs(0); vector points(n); for (int i=0; i> points[i].x >> points[i].y; points[i].id = i; } sort(points.begin(), points.end()); solve(points, 0); }