Submission #1093162

#TimeUsernameProblemLanguageResultExecution timeMemory
1093162LuvidiNestabilnost (COI23_nestabilnost)C++17
41 / 100
174 ms197208 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back const int maxn=5e3; vector<int> adj[maxn]; int n; ll dp[maxn+1][maxn+1],mn[maxn+1],a[maxn+1],f[maxn+1]; void dfs(int v,int p){ for(int i:adj[v])if(i!=p)dfs(i,v); mn[v]=1e18; for(int i=1;i<=n;i++){ if(a[v]>=i){ dp[v][i]=1e18; continue; } dp[v][i]=f[i]; for(int x:adj[v])if(x!=p){ if(a[x]<i&&a[x]==(a[v]+1)%i){ dp[v][i]+=min(mn[x],dp[x][i]-f[i]); }else{ dp[v][i]+=mn[x]; } } mn[v]=min(mn[v],dp[v][i]); } } void solve(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)cin>>f[i]; for(int i=0;i<n-1;i++){ int u,v; cin>>u>>v; adj[u].pb(v); adj[v].pb(u); } dfs(1,1); cout<<mn[1]; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...