Submission #89334

# Submission time Handle Problem Language Result Execution time Memory
89334 2018-12-11T18:20:03 Z vvash17 Triumphal arch (POI13_luk) C++14
100 / 100
1290 ms 26620 KB

#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 7 ms 7416 KB Output is correct
2 Correct 7 ms 7420 KB Output is correct
3 Correct 7 ms 7480 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 7480 KB Output is correct
2 Correct 8 ms 7536 KB Output is correct
3 Correct 8 ms 7556 KB Output is correct
4 Correct 7 ms 7556 KB Output is correct
5 Correct 7 ms 7556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 7556 KB Output is correct
2 Correct 8 ms 7556 KB Output is correct
3 Correct 9 ms 7584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 7600 KB Output is correct
2 Correct 8 ms 7644 KB Output is correct
3 Correct 9 ms 7656 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 7912 KB Output is correct
2 Correct 22 ms 8296 KB Output is correct
3 Correct 17 ms 8296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 8756 KB Output is correct
2 Correct 57 ms 10216 KB Output is correct
3 Correct 41 ms 10216 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 205 ms 11496 KB Output is correct
2 Correct 228 ms 14204 KB Output is correct
3 Correct 133 ms 14204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 839 ms 15100 KB Output is correct
2 Correct 755 ms 22052 KB Output is correct
3 Correct 268 ms 22052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1272 ms 22052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1290 ms 22052 KB Output is correct
2 Correct 1202 ms 26620 KB Output is correct
3 Correct 517 ms 26620 KB Output is correct