제출 #1338800

#제출 시각아이디문제언어결과실행 시간메모리
1338800javkhlantogsBeads and wires (APIO14_beads)C++20
0 / 100
0 ms344 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<vector<pair<ll,ll>>> e;
ll mn;
ll dfs(ll u,ll p){
	ll sz=1;
	for(auto v:e[u]){
		if(v.first==p) continue;
		mn=min(mn,v.second);
		sz+=dfs(v.first,u);
	}
	return sz;
}
int main(){
	ll n,i,j,k,q;
	cin>>n;
	e.resize(n+1);
	vector<ll> a(n-1),b(n-1),c(n-1);
	ll val0=0;
	for(i=0 ; i<n-1 ; i++){
		cin>>a[i]>>b[i]>>c[i];
		e[a[i]].push_back({b[i],c[i]});
		e[b[i]].push_back({a[i],c[i]});
		val0+=c[i];
	}
	ll ans=0;
	if(n%2==0){
		for(i=0 ; i<n-1 ; i++){
			ll val=val0-c[i];
			mn=1e18;
			ll sz1=dfs(a[i],b[i]);
			sz1--;
			if(sz1%2) val-=mn;
			mn=1e18;
			ll sz2=dfs(b[i],a[i]);
			sz2--;
			if(sz2%2) val-=mn;
			ans=max(ans,val);
		}
		cout<<ans<<"\n";
		return 0;
	}
		else{
			sort(c.begin(),c.end());
			ans=val0-c[0]-c[1];
			cout<<ans<<"\n";
		}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...