Submission #88917

# Submission time Handle Problem Language Result Execution time Memory
88917 2018-12-09T19:35:01 Z zviki Triumphal arch (POI13_luk) C++14
100 / 100
1202 ms 24436 KB
#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_set>

#define 	avg(a ,b) 	((a + b) / 2)
#define 	ARR_SIZE 	300050

using namespace std;

int 
num_not_satisfy(char visited_set[], int num_workers, int city, vector<vector<int>> & map_of_cities)
{	
	int i, child_city, children, rec_res, num_children;
	i = 0, rec_res = 0, visited_set[city] = 1, children = map_of_cities[city].size(), num_children = 0;
	while (i < children){
		child_city = map_of_cities[city][i];
		if (visited_set[child_city] !=  0) {
			goto nextiteration; }
		num_children++;
		rec_res += num_not_satisfy(visited_set, num_workers, child_city, map_of_cities);
		nextiteration: ;
		i++;
	}
	return ((num_children + rec_res - num_workers <= 0) ? 0 : (num_children + rec_res - num_workers));
}

int 
main(int argc, char * argv[]) 
{
	int n, i = 0, res, bsearch_start, bsearch_end, bsearch_mid, road_from, road_to; 	
	cin >> n;
	vector<vector<int>> map_of_cities;
	while(i++ < n){
		vector<int> temp;
		map_of_cities.push_back(temp);
	}
	i = 1;
	while (i++ < n) {
		cin >> road_from >> road_to;
		map_of_cities[road_from - 1].push_back(road_to - 1);
		map_of_cities[road_to - 1].push_back(road_from - 1); 
	}
	bsearch_start = 0, bsearch_end = n;
	while (bsearch_start < bsearch_end) {
		bsearch_mid = avg(bsearch_start, bsearch_end);
		char visited_set[n + 5] = { 0 };
		res = num_not_satisfy(visited_set, bsearch_mid, 0, map_of_cities);
		((res != 0) ? (bsearch_start = bsearch_mid + 1) : (bsearch_end = bsearch_mid)); 
	}
	res = bsearch_start;
	cout << res << endl;
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 500 KB Output is correct
3 Correct 2 ms 500 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 500 KB Output is correct
2 Correct 2 ms 500 KB Output is correct
3 Correct 2 ms 624 KB Output is correct
4 Correct 2 ms 624 KB Output is correct
5 Correct 2 ms 624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 624 KB Output is correct
2 Correct 2 ms 624 KB Output is correct
3 Correct 2 ms 624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 624 KB Output is correct
2 Correct 3 ms 624 KB Output is correct
3 Correct 3 ms 624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 1076 KB Output is correct
2 Correct 15 ms 1328 KB Output is correct
3 Correct 12 ms 1328 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 57 ms 2348 KB Output is correct
2 Correct 53 ms 3400 KB Output is correct
3 Correct 39 ms 3400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 225 ms 6296 KB Output is correct
2 Correct 214 ms 8648 KB Output is correct
3 Correct 127 ms 8648 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 615 ms 12148 KB Output is correct
2 Correct 679 ms 17868 KB Output is correct
3 Correct 322 ms 17868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1145 ms 17888 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1180 ms 17936 KB Output is correct
2 Correct 1202 ms 24436 KB Output is correct
3 Correct 654 ms 24436 KB Output is correct