#include #include #include #include #include #include #include #include #include #include #include using namespace std; class Solution { public: vector sumOfDistancesInTree(int n, vector >&edges); }; vector Solution::sumOfDistancesInTree(int n, vector >&edges) { vector rv; return rv; } int main(int argc, char **argv) { vector < vector > E; vector edge, rv; vector nodes; int i, j, tmp; int mx; Solution s; bool print; bool line; int sz; mx = -1; edge.resize(2, 0); if (argc == 1) { while (cin >> edge[0] >> edge[1]) { E.push_back(edge); if (edge[0] > mx) mx = edge[0]; if (edge[1] > mx) mx = edge[1]; } } else { i = atoi(argv[1]); print = (i < 0); if (print) i = -i; srand48(i); if (i % 5 == 0) { sz = drand48() * 15 + 1; } else { sz = drand48() * 30000 + 1; } line = (drand48() * 10 > 9); for (i = 0; i < sz; i++) nodes.push_back(i); for (i = 0; i < sz; i++) { j = drand48() * (sz - i); tmp = nodes[j]; nodes[j] = nodes[sz-i-1]; nodes[sz-i-1] = tmp; } for (i = 1; i < sz; i++) { edge[0] = nodes[i]; if (line) { edge[1] = nodes[i-1]; } else { edge[1] = nodes[drand48()*i]; } E.push_back(edge); } mx = sz-1; } rv = s.sumOfDistancesInTree(mx+1, E); if (print) { for (i = 0; i < E.size(); i++) { printf("%d %d\n", E[i][0], E[i][1]); } printf("\n"); } for (i = 0; i < rv.size(); i++) printf("%d ", rv[i]); printf("\n"); return 0; }