#include <iostream>
#include <vector>
using namespace std;
vector<int> graph[300001];
int city_num,from,to;
int evaluate_result(int &search_start,int &need_num,int* been_there){
int available_neigbours = 0;
int sub_tree_res = 0;
been_there[search_start]++;
int neighbour_size = graph[search_start].size();
for(int i = 0; i<neighbour_size; i++){
int tmp = graph[search_start][i];
if(been_there[tmp] == 0){
++available_neigbours;
sub_tree_res += evaluate_result(tmp,need_num,been_there);
}
}
int res = available_neigbours-(need_num-sub_tree_res);
if(res < 0)return 0;
return res;
}
int search_init(int &need_num){
int been_there[city_num+1] = {0};
int start = 1;
return evaluate_result(start,need_num,been_there);
}
void read_arguments(){
cin>>city_num;
for(int i = 1; i<city_num; i++){
cin>>from>>to;
graph[from].push_back(to);
graph[to].push_back(from);
}
}
void process(){
int need_num;
int start_point = 1;
int finish_point = city_num;
int result = 0;
while (start_point < finish_point) {
need_num = (start_point+finish_point)/2;
result = search_init(need_num);
if(result == 0){
finish_point = need_num;
}else{
start_point = ++need_num;
}
result = start_point;
}
cout<<result<<endl;
}
int main() {
read_arguments();
process();
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
7288 KB |
Output is correct |
2 |
Correct |
8 ms |
7432 KB |
Output is correct |
3 |
Correct |
8 ms |
7592 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
7592 KB |
Output is correct |
2 |
Correct |
8 ms |
7592 KB |
Output is correct |
3 |
Correct |
9 ms |
7592 KB |
Output is correct |
4 |
Correct |
9 ms |
7616 KB |
Output is correct |
5 |
Correct |
8 ms |
7616 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
7616 KB |
Output is correct |
2 |
Correct |
9 ms |
7616 KB |
Output is correct |
3 |
Correct |
8 ms |
7628 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
7672 KB |
Output is correct |
2 |
Correct |
9 ms |
7672 KB |
Output is correct |
3 |
Correct |
9 ms |
7672 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
24 ms |
8028 KB |
Output is correct |
2 |
Correct |
24 ms |
8312 KB |
Output is correct |
3 |
Correct |
20 ms |
8312 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
63 ms |
8700 KB |
Output is correct |
2 |
Correct |
61 ms |
10104 KB |
Output is correct |
3 |
Correct |
41 ms |
10104 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
267 ms |
11384 KB |
Output is correct |
2 |
Correct |
315 ms |
14268 KB |
Output is correct |
3 |
Correct |
143 ms |
14268 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
995 ms |
14968 KB |
Output is correct |
2 |
Correct |
884 ms |
22012 KB |
Output is correct |
3 |
Correct |
329 ms |
22012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1264 ms |
22012 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1311 ms |
22012 KB |
Output is correct |
2 |
Correct |
1274 ms |
26704 KB |
Output is correct |
3 |
Correct |
607 ms |
26704 KB |
Output is correct |