Submission #488047

# Submission time Handle Problem Language Result Execution time Memory
488047 2021-11-17T13:44:58 Z inksamurai Sjekira (COCI20_sjekira) C++17
40 / 110
1000 ms 21268 KB
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define rep(i,n) for(int i=0;i<n;i++)
#define crep(i,x,n) for(int i=x;i<n;i++)
#define drep(i,n) for(int i=n-1;i>=0;i--)
#define vec(...) vector<__VA_ARGS__>
#define _3HaBFkZ ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
using pii=pair<int,int>;
using vi=vector<int>;

struct dsu{
	int n,size_;
	vector<int> par,siz,maxima;
	dsu(int m,vi a){
		init(m,a);
	}
	void init(int m,vi a){
		n=m;
		size_=m;
		par.resize(n,0);
		siz.resize(n,0);
		maxima.resize(n,0);
		for(int i=0;i<n;i++){
			par[i]=i;
			siz[i]=1;
			maxima[i]=a[i];
		}
	}
	void merge(int x,int y,int type=0){
		int a=parent(x),b=parent(y);
		if(a==b) return;
		size_--;
		if(siz[a]>siz[b]) {
			siz[a]+=siz[b];
			par[b]=a;
			maxima[a]=max(maxima[a],maxima[b]);
		}else{
			siz[b]+=siz[a];
			par[a]=b;
			maxima[b]=max(maxima[b],maxima[a]);
		}
	}
	int parent(int x){
		return par[x]==x?x:parent(par[x]);
	}
	bool same(int x, int y){
		return parent(x)==parent(y);
	}
	int size(){
		return size_;
	}
};

int main(){
_3HaBFkZ;
	int n;
	cin>>n;
	vi a(n);
	rep(i,n){
		cin>>a[i];
	}
	vec(set<int>) adj(n);
	rep(i,n-1){
		int u,v;
		cin>>u>>v;
		u--,v--;
		adj[u].insert(v);
		adj[v].insert(u);
	}
	vec(pii) rbts;
	rep(i,n){
		rbts.pb({a[i],i});
	}
	sort(all(rbts));
	reverse(all(rbts));
	auto dfs=[&](auto self,int v,int par)->ll{
		ll cost=a[v];
		for(auto u : adj[v]){
			if(u!=par){
				cost=max(cost,self(self,u,v));
			}
		}
		return cost;
	};
	ll ans=0;
	rep(i,sz(rbts)){
		int v=rbts[i].se;
		ll val=rbts[i].fi;
		for(auto u : adj[v]){
			adj[u].erase(v);
		}
		for(auto u : adj[v]){
			ll cost=dfs(dfs,u,v);
			ans+=val+cost;
		}
	}
	cout<<ans<<"\n";
//	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 0 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 0 ms 208 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 94 ms 14832 KB Output is correct
2 Correct 83 ms 12500 KB Output is correct
3 Correct 57 ms 11920 KB Output is correct
4 Correct 66 ms 14140 KB Output is correct
5 Correct 107 ms 19652 KB Output is correct
6 Execution timed out 1034 ms 21268 KB Time limit exceeded
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 0 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 0 ms 208 KB Output is correct
6 Correct 4 ms 464 KB Output is correct
7 Correct 3 ms 464 KB Output is correct
8 Correct 1 ms 336 KB Output is correct
9 Correct 4 ms 464 KB Output is correct
10 Correct 5 ms 464 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 0 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 0 ms 208 KB Output is correct
6 Correct 94 ms 14832 KB Output is correct
7 Correct 83 ms 12500 KB Output is correct
8 Correct 57 ms 11920 KB Output is correct
9 Correct 66 ms 14140 KB Output is correct
10 Correct 107 ms 19652 KB Output is correct
11 Execution timed out 1034 ms 21268 KB Time limit exceeded
12 Halted 0 ms 0 KB -