Submission #411175

# Submission time Handle Problem Language Result Execution time Memory
411175 2021-05-24T13:53:39 Z Blagojce Chase (CEOI17_chase) C++11
0 / 100
97 ms 57224 KB
#include <bits/stdc++.h>
#define fr(i, n, m) for(int i = (n); i < (m); i ++)
#define pb push_back
#define st first
#define nd second
#define pq priority_queue
#define all(x) begin(x), end(x)


using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
const int i_inf = 1e9;
const ll inf = 1e18;
const ll mod = 1e9+7;
const ld eps = 1e-13;
const ld pi  = 3.14159265359;

mt19937 _rand(time(NULL));
clock_t z;

const int mxn = 2e5+5;

int n, v;
int a[mxn];

vector<int> g[mxn];

int ans = 0;

void dfs(int u, int p, pq<int> Q, int sum){
	int nsum = 0;
	for(auto e : g[u]){
		if(e == p) continue;
		nsum += a[e];
	}
	Q.push(-nsum);
	sum += nsum;
	if((int)Q.size() > v){
		sum += Q.top();
		Q.pop();
	}
	ans = max(ans, sum);
	
	
	
	for(auto e : g[u]){
		if(e == p) continue;
		dfs(e, u, Q, sum);
	}
}

void solve(){	
	cin >> n >> v;
	fr(i, 0, n){
		cin >> a[i];
	}
	fr(i, 0, n-1){
		int u, v;
		cin >> u >> v;
		--u, --v;
		g[u].pb(v);
		g[v].pb(u);
	}
	if(n <= 1000){
		fr(i, 0, n){
			pq <int> init;
			dfs(i, i, init, 0);
		}
	}	
	else{
		pq<int> init;
		dfs(0, 0, init, 0);
	}
	cout<<ans<<endl;
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	solve();
}/*
12 2
2 3 3 8 1 5 6 7 8 3 5 4
2 1
2 7
3 4
4 7
7 6
5 6
6 8
6 9
7 10
10 11
10 12
*/
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5068 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Incorrect 3 ms 5028 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5068 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Incorrect 3 ms 5028 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 97 ms 57224 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5068 KB Output is correct
2 Correct 3 ms 5028 KB Output is correct
3 Incorrect 3 ms 5028 KB Output isn't correct
4 Halted 0 ms 0 KB -