Submission #371622

# Submission time Handle Problem Language Result Execution time Memory
371622 2021-02-27T03:59:59 Z evn Triumphal arch (POI13_luk) C++14
100 / 100
1420 ms 28940 KB
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define sz(a) a.size()
typedef long long ll;
typedef pair<int, int> pii;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<class T> using oset=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int N;
vector<int> adj[300005];
int dp[300005];

void dfs(int u, int p, int k){
	int child = 0;
	dp[u] = 0;
	for(int v : adj[u]){
		if(v != p){
			child++;
			dfs(v, u, k);
			dp[u] += dp[v];
		}
	}
	dp[u] += child - k;
	dp[u] = max(dp[u], 0);
}
bool ok(int k){
	memset(dp, 0, sizeof(dp));
	dfs(0, -1, k);
	return dp[0] == 0;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> N;
	for(int i = 0; i < N-1;i ++){
		int a, b;
		cin >> a >> b;
		a--; b--;
		adj[a].pb(b);
		adj[b].pb(a);
	}
	int lo =0; int hi = N;
	while(lo < hi){
		int mid = (lo+hi)/2;
		if(ok(mid)){
			hi = mid;
		}
		else{
			lo = mid+1;
		}
	}
	cout << lo << '\n';

}
# Verdict Execution time Memory Grader output
1 Correct 8 ms 8608 KB Output is correct
2 Correct 8 ms 8556 KB Output is correct
3 Correct 7 ms 8556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 8556 KB Output is correct
2 Correct 8 ms 8556 KB Output is correct
3 Correct 8 ms 8608 KB Output is correct
4 Correct 7 ms 8684 KB Output is correct
5 Correct 7 ms 8556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 8684 KB Output is correct
2 Correct 8 ms 8588 KB Output is correct
3 Correct 7 ms 8556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 8640 KB Output is correct
2 Correct 9 ms 8580 KB Output is correct
3 Correct 9 ms 8704 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 8964 KB Output is correct
2 Correct 16 ms 9200 KB Output is correct
3 Correct 11 ms 9068 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 10112 KB Output is correct
2 Correct 51 ms 10988 KB Output is correct
3 Correct 30 ms 9964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 373 ms 13000 KB Output is correct
2 Correct 278 ms 15492 KB Output is correct
3 Correct 91 ms 13420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 836 ms 17656 KB Output is correct
2 Correct 872 ms 23552 KB Output is correct
3 Correct 273 ms 18560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1327 ms 22432 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1420 ms 22436 KB Output is correct
2 Correct 1216 ms 28940 KB Output is correct
3 Correct 553 ms 23320 KB Output is correct