Submission #1109004

#TimeUsernameProblemLanguageResultExecution timeMemory
1109004doducanhFactories (JOI14_factories)C++14
100 / 100
3168 ms355716 KiB
#include <bits/stdc++.h> //#include "factories.h" using namespace std; #define ll long long #define fi first #define se second const ll MOD = 1e9 + 7; const ll N = 5e5 + 2; const ll inf = 1e14 + 2; vector<ll> minn(N); vector<int> sz(N), used(N, 0); vector<vector<pair<int, ll>>> adj(N), ancestors(N); int n; int dfs(int u,int par) { sz[u]=1; for(pair<int,ll>pp:adj[u]){ int v=pp.fi; int w=pp.se; if(v==par||used[v])continue; sz[u]+=dfs(v,u); } return sz[u]; } void update(int node, int parent, int c, ll d) { ancestors[node].push_back(make_pair(c, d)); for (auto child : adj[node]) { if (child.first == parent || used[child.first]) continue; update(child.first, node, c, d + child.second); } } void find_cent(int node, int parent, int size) { for (auto child : adj[node]) { if (child.first == parent || used[child.first]) continue; if (sz[child.first] * 2 > size) { find_cent(child.first, node, size); return; } } update(node, -1, node, 0); used[node] = 1; for (auto child :adj[node]) { if (used[child.first]) continue; find_cent(child.first, node,dfs(child.fi,node)); } } void Init(int N, int A[], int B[], int D[]) { for (int i = 0; i < N-1; i++) { adj[A[i]].push_back(make_pair(B[i], D[i])); adj[B[i]].push_back(make_pair(A[i], D[i])); } dfs(0, -1); find_cent(0, -1, N); } long long Query(int S, int X[], int T, int Y[]) { for(int i=0;i<T;i++){ for(pair<int,long long> y:ancestors[Y[i]]){ minn[y.fi]=inf; } } for(int i=0;i<S;i++){ for(pair<int,ll> y:ancestors[X[i]]){ minn[y.fi]=min(minn[y.fi],y.se); } } ll ans=inf; for(int i=0;i<T;i++){ for(pair<int,ll> y:ancestors[Y[i]]){ ans=min(ans,minn[y.fi]+y.se); } } return ans; }

Compilation message (stderr)

factories.cpp: In function 'int dfs(int, int)':
factories.cpp:21:13: warning: unused variable 'w' [-Wunused-variable]
   21 |         int w=pp.se;
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...