제출 #1153972

#제출 시각아이디문제언어결과실행 시간메모리
1153972i271828Sjekira (COCI20_sjekira)C++20
40 / 110
1097 ms12612 KiB
#include <bits/stdc++.h> #define ll long long #define pii pair<int,int> using namespace std; const int MAX=100005; int N=3; vector<int> adj[MAX]={}; int A[MAX]={1,2,3}; bool vis[MAX]; int dfs_max(int i,int p){ int ans=i; for (auto x:adj[i]){ if (x==p||vis[x]) continue; int y=dfs_max(x,i); if (A[y]>A[ans]) ans=y; } return ans; } pair<ll,int> calc(int i){ ll ans=0; int max_i=dfs_max(i,-1); //cout<<max_i<<'\n'; vis[max_i]=true; for (auto x:adj[max_i]){ if (vis[x]) continue; ans+=A[max_i]; auto y=calc(x); ans+=A[y.second]; //cout<<ans<<' '<<y<<'a'<<'\n'; ans+=y.first; } return {ans,max_i}; } int main(){ cin>>N; for (int i=0;i<N;i++) cin>>A[i]; for (int i=0;i<N-1;i++){ int a,b; cin>>a>>b; a--,b--; adj[a].push_back(b); adj[b].push_back(a); } cout<<calc(0).first; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...