Submission #1154087

#TimeUsernameProblemLanguageResultExecution timeMemory
1154087dzuizzSjekira (COCI20_sjekira)C++20
10 / 110
1097 ms4168 KiB
#include<bits/stdc++.h> using namespace std; #define int long long constexpr int MAXN=100005; int n,res,t[MAXN],pa[MAXN],val[MAXN]; pair<int,int> e[MAXN]; int find(int x){ return pa[x]==x?x:pa[x]=find(pa[x]); } void merge(int a,int b){ a=find(a),b=find(b); if(a==b) return; pa[b]=a,res+=val[a]+val[b]; val[a]=max(val[a],val[b]); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // Subtask 1 cin>>n; for(int i=0;i<n;++i) cin>>t[i]; for(int i=0;i<n-1;++i){ cin>>e[i].first>>e[i].second; --e[i].first,--e[i].second; } int a[n-1],ans=3e18; iota(a,a+n-1,0); do{ iota(pa,pa+n,0); for(int i=0;i<n;++i) val[i]=t[i]; res=0; for(int i=0;i<n-1;++i){ auto&[u,v]=e[a[i]]; merge(u,v); } /*if(res<ans){ for(auto&x:a)cout<<x<<" "; cout<<'\n'; }*/ ans=min(ans,res); }while(next_permutation(a,a+n-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...