Submission #1180971

#TimeUsernameProblemLanguageResultExecution timeMemory
1180971AlishFactories (JOI14_factories)C++20
100 / 100
2107 ms160612 KiB
#include "factories.h" #include<bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef long double ld; #define F first #define S second #define pb push_back #define endl '\n' #define Mp make_pair #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " = " << x << endl; #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("input19.txt" , "r" , stdin) ; const int N = 5e5+23, L=19; const ll INF=1e18+23; vector<pii> g[N]; int dead[N]; int sz[N], H[N], par[N]; ll h[N][L]; ll dp[N]; int n; void dfs(int v, int p=0){ sz[v]=1; for (auto [u, w]: g[v]) if(u!=p && !dead[u]){ dfs(u, v); sz[v]+=sz[u]; } } int cent(int v, int num, int p=0){ for(auto [u, w]: g[v]) if(u!=p && !dead[u] && 2*sz[u]>num) return cent(u, num, v); return v; } void DFS(int v, int hh, int p=0){ for (auto [u, w]: g[v])if(u!=p && !dead[u]){ h[u][hh]=h[v][hh]+w; DFS(u, hh, v); } } void Dec(int v=1, int hh=0, int p=0){ dfs(v); v=cent(v, sz[v]); H[v]=hh; par[v]=p; DFS(v, hh); dead[v]=1; for (auto [u, w]: g[v]) if(!dead[u]) Dec(u, hh+1, v); } void Init(int N, int A[], int B[], int D[]) { n=N; for (int i=0; i<n-1; i++){ A[i]++; B[i]++; g[A[i]].pb({B[i], D[i]}); g[B[i]].pb({A[i], D[i]}); } Dec(); for (int i=1; i<=n; i++) dp[i]=INF; } long long Query(int S, int X[], int T, int Y[]) { for (int i=0; i<S; i++) X[i]++; for (int i=0; i<T; i++) Y[i]++; for (int i=0; i<S; i++){ int v=X[i]; while(v){ dp[v]=min(dp[v], h[X[i]][H[v]]); v=par[v]; } } ll ans=INF; for (int i=0; i<T; i++){ int v=Y[i]; while(v){ ans=min(ans, dp[v]+h[Y[i]][H[v]]); v=par[v]; } } for (int i=0; i<S; i++){ int v=X[i]; while(v){ dp[v]=INF; v=par[v]; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...