Submission #824601

#TimeUsernameProblemLanguageResultExecution timeMemory
824601HanksburgerRoad Closures (APIO21_roads)C++17
21 / 100
2070 ms36280 KiB
#include "roads.h" #include <bits/stdc++.h> using namespace std; vector<pair<long long, long long> > adj[100005]; long long dp[100005][2], deg[100005], limit; vector<long long> ans; void dfs(long long u, long long p, long long x) { for (long long i=0; i<adj[u].size(); i++) { long long v=adj[u][i].first, w=adj[u][i].second; if (v==p) continue; dfs(v, u, w); } vector<long long> vec, tmp; vec.push_back(0); for (long long i=1; i<=limit; i++) vec.push_back(1e18); for (long long i=0; i<adj[u].size(); i++) { long long v=adj[u][i].first, w=adj[u][i].second; if (v==p) continue; tmp.push_back(vec[0]+dp[v][0]); for (int j=1; j<=limit; j++) tmp.push_back(min(vec[j]+dp[v][0], vec[j-1]+dp[v][1])); vec=tmp; tmp.clear(); } long long mn=1e18; for (long long i=0; i<limit; i++) mn=min(mn, vec[i]); dp[u][0]=min(mn, vec[limit])+x; dp[u][1]=mn; } vector<long long> minimum_closure_costs(int n, vector<int> u, vector<int> v, vector<int> w) { for (long long i=0; i<n-1; i++) { adj[u[i]].push_back({v[i], w[i]}); adj[v[i]].push_back({u[i], w[i]}); deg[u[i]]++, deg[v[i]]++; } long long mx=0; for (long long i=0; i<n; i++) mx=max(mx, deg[i]); for (long long i=0; i<mx; i++) { limit=i; dfs(0, 0, 0); ans.push_back(dp[0][0]); } for (long long i=mx; i<n; i++) ans.push_back(0); return ans; }

Compilation message (stderr)

roads.cpp: In function 'void dfs(long long int, long long int, long long int)':
roads.cpp:9:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for (long long i=0; i<adj[u].size(); i++)
      |                         ~^~~~~~~~~~~~~~
roads.cpp:20:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     for (long long i=0; i<adj[u].size(); i++)
      |                         ~^~~~~~~~~~~~~~
roads.cpp:22:38: warning: unused variable 'w' [-Wunused-variable]
   22 |         long long v=adj[u][i].first, w=adj[u][i].second;
      |                                      ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...