#include <iostream>
#include <vector>
using namespace std;
#define MAX_NUM 300001
#define vi vector<int>
#define loop(n) for(int i = 0; i < (n); i++)
#define it_loop(cont) for(auto &elem : cont)
void read(vi * graph, int &n_nodes) {
cin >> n_nodes;
loop(n_nodes - 1) {
int node1, node2;
cin >> node1 >> node2;
graph[node1].emplace_back(node2);
graph[node2].emplace_back(node1);
}
}
void depth_first(int cur, int prev, int &m, int *memo, vi * graph) {
memo[cur] = m - (int)graph[cur].size();
memo[cur] += (prev) ? 1 : 0;
it_loop(graph[cur]) {
if (elem == prev) continue;
depth_first(elem, cur, m, memo, graph);
if (memo[elem] < 0) memo[cur] += memo[elem];
}
}
int b_search(int n_nodes, int &cur_node, int *memo, vi *graph) {
int start_node = 0, end_node = n_nodes;
while (start_node < end_node) {
int m = (start_node + end_node) >> 1;
cur_node = m;
depth_first(1, 0, cur_node, memo, graph);
memo[1] < 0 ? start_node = m + 1 : end_node = m;
}
return start_node;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n_nodes, cur_node, *memo;
memo = new int[MAX_NUM];
vi * graph = new vi[MAX_NUM];
read(graph, n_nodes);
cout << b_search(n_nodes, cur_node, memo, graph) << endl;
delete[] memo;
delete[] graph;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7420 KB |
Output is correct |
2 |
Correct |
8 ms |
7544 KB |
Output is correct |
3 |
Correct |
8 ms |
7624 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7624 KB |
Output is correct |
2 |
Correct |
8 ms |
7624 KB |
Output is correct |
3 |
Correct |
8 ms |
7624 KB |
Output is correct |
4 |
Correct |
8 ms |
7624 KB |
Output is correct |
5 |
Correct |
8 ms |
7624 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7624 KB |
Output is correct |
2 |
Correct |
8 ms |
7624 KB |
Output is correct |
3 |
Correct |
8 ms |
7660 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7668 KB |
Output is correct |
2 |
Correct |
8 ms |
7672 KB |
Output is correct |
3 |
Correct |
9 ms |
7692 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
18 ms |
8084 KB |
Output is correct |
2 |
Correct |
18 ms |
8564 KB |
Output is correct |
3 |
Correct |
13 ms |
8564 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
39 ms |
9424 KB |
Output is correct |
2 |
Correct |
40 ms |
10932 KB |
Output is correct |
3 |
Correct |
28 ms |
10932 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
190 ms |
12876 KB |
Output is correct |
2 |
Correct |
172 ms |
16272 KB |
Output is correct |
3 |
Correct |
69 ms |
16272 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
694 ms |
18964 KB |
Output is correct |
2 |
Correct |
634 ms |
27336 KB |
Output is correct |
3 |
Correct |
189 ms |
27336 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1138 ms |
27800 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1125 ms |
27800 KB |
Output is correct |
2 |
Correct |
1102 ms |
38212 KB |
Output is correct |
3 |
Correct |
534 ms |
38212 KB |
Output is correct |