Submission #992546

#TimeUsernameProblemLanguageResultExecution timeMemory
992546AbitoPaths (RMI21_paths)C++17
0 / 100
0 ms604 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define ppb pop_back #define ep insert #define endl '\n' #define elif else if #define pow pwr #define sqrt sqrtt //#define int long long #define ll long long #define y1 YONE typedef unsigned long long ull; using namespace std; const int N=2005; int n,k,tin[N],sz[N],par[N],t,v[N],tree[N],lx,rx,val; vector<pair<int,int>> adj[N]; pair<ll,int> seg[4*N+5]; ll dis[N],lazy[4*N+5]; bool vis[N]; void dfs(int x,int p){ par[x]=p; sz[x]=1; t++; tin[x]=t; tree[t]=x; for (auto u:adj[x]){ if (p==u.F) continue; v[u.F]=u.S; dis[u.F]=dis[x]+u.S; dfs(u.F,x); sz[x]+=sz[u.F]; }return; } void build(int x,int l,int r){ lazy[x]=0; if (l==r){ seg[x]={dis[tree[l]],tree[l]}; return; }int mid=(l+r)/2; build(x*2,l,mid); build(x*2+1,mid+1,r); seg[x]=max(seg[x*2],seg[x*2+1]); return; } void push(int x){ seg[x*2].F+=lazy[x]; seg[x*2+1].F+=lazy[x]; lazy[x*2]+=lazy[x]; lazy[x*2+1]+=lazy[x]; lazy[x]=0; return; } void edit(int x,int l,int r){ if (l>rx || r<lx) return; if (l>=lx && r<=rx){ seg[x].F+=val; lazy[x]+=val; return; }int mid=(l+r)/2; push(x); edit(x*2,l,mid); edit(x*2+1,mid+1,r); seg[x]=max(seg[x*2],seg[x*2+1]); return; } int32_t main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); cin>>n>>k; for (int i=1;i<n;i++){ int x,y,w; cin>>x>>y>>w; adj[x].pb({y,w}); adj[y].pb({x,w}); } for (int i=1;i<=n;i++){ t=0;dis[i]=0;v[i]=0;par[i]=0; memset(vis,0,sizeof(vis)); dfs(i,0); build(1,1,n); int ans=0; for (int kk=1;kk<=k;kk++){ int x=seg[1].S; //cout<<x<<' '; while (!vis[x] && x){ ans+=v[x]; lx=tin[x]; rx=tin[x]+sz[x]-1; val=-v[x]; if (v[x]) edit(1,1,n); v[x]=0; vis[x]=1; x=par[x]; } }cout<<ans<<endl; } return 0; }
#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...