Submission #1300337

#TimeUsernameProblemLanguageResultExecution timeMemory
1300337jahongirDžumbus (COCI19_dzumbus)C++20
0 / 110
19 ms2616 KiB
#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define vi vector<int> #define pb push_back #define all(a) a.begin(),a.end() const int mxn = 1001, inf = 1e9+1; vector<int> g[mxn], dp[mxn], dp2[mxn]; int val[mxn], sub[mxn]; bool vis[mxn]; void dfs(int u){ vis[u] = 1; dp[u].resize(2,inf); dp[u][1] = val[u]; dp2[u].resize(2,inf); dp2[u][0] = 0; sub[u] = 1; for(auto v : g[u]) if(!vis[v]){ dfs(v); dp[u].resize(sub[u]+sub[v]+1,inf); dp2[u].resize(sub[u]+sub[v]+1,inf); for(int i = sub[u]+sub[v]; i >= 0; i--) for(int j = max(0,i-sub[v]); j <= min(i,sub[u]); j++){ dp[u][i] = min(dp[u][i],dp[u][j] + dp[v][i-j]); dp2[u][i] = min(dp2[u][i],dp2[u][j] + dp2[v][i-j]); if(i-j!=1) dp2[u][i] = min(dp2[u][i],dp2[u][j] + dp[v][i-j]); dp[u][i] = min(dp[u][i],dp[u][j] + dp2[v][i-j]); } sub[u] += sub[v]; } } void solve(){ int n,m,q; cin >> n >> m; for(int i = 1; i <= n; i++) cin >> val[i]; for(int i = 1; i <= m; i++){ int u,v; cin >> u >> v; g[u].pb(v); g[v].pb(u); } vector<int> res(n+1,inf); res[0] = 0; int sz = 0; for(int i = 1; i <= n; i++) if(!vis[i]){ dfs(i); for(int j = sz+sub[i]; j; j--) for(int k = max(0,j-sub[i]); k <= min(j,sz); k++){ res[j] = min(res[j],res[k] + dp2[i][j-k]); if(j-k!=1) res[j] = min(res[j],res[k] + dp[i][j-k]); } sz += sub[i]; } vector<pii> vec; for(int i = 0; i <= n; i++) if(res[i] != inf){ vec.push_back({res[i],i}); } cin >> q; for(int i = 0; i < q; i++){ int s; cin >> s; int ind = upper_bound(all(vec),make_pair(s,n)) - vec.begin()-1; cout << vec[ind].second << '\n'; } } signed main(){ cin.tie(0)->sync_with_stdio(0); int t = 1; // cin >> t; while(t--){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...