#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int>> adj[2001];
int in[2001],outt[2001];
pair<int,int>P[2001];int decode[2001];int timer = 0;
pair<int,int> seg[8001];int lazy[8001];
void build(int p,int l,int r){
lazy[p] = 0;
if(l==r){
seg[p].second = decode[l];
seg[p].first = 0;
return;
}
int md = (l+r)/2;
build(p*2,l,md);
build(p*2+1,md+1,r);
seg[p] = max(seg[p*2],seg[p*2+1]);
}
void prop(int p,int l,int r){
seg[p].first+=lazy[p];
if(l!=r){
lazy[p*2]+=lazy[p];
lazy[p*2+1]+=lazy[p];
}
lazy[p] = 0;
}
void update(int p,int l,int r,int lq,int rq,int val){
prop(p,l,r);
if(l>=lq&&r<=rq){
lazy[p]+=val;
prop(p,l,r);
return ;
}
if(r<lq||l>rq)return ;
int md = (l+r)/2;
update(p*2,l,md,lq,rq,val);
update(p*2+1,md+1,r,lq,rq,val);
seg[p] = max(seg[p*2],seg[p*2+1]);
}
void dfs(int i,int pr){
in[i] = ++timer;
decode[timer] = i;
for(auto j:adj[i]){
if(j.first==pr)continue;
dfs(j.first,i);
}
outt[i] = timer;
}
int n;
void go(int i,int pr,int la){
P[i] = {pr,la};
for(auto j:adj[i]){
if(j.first==pr)continue;
update(1,1,n,in[j.first],outt[j.first],j.second);
go(j.first,i,j.second);
}
}
signed main(){
ios_base::sync_with_stdio(false);cin.tie(0);
int k;
cin>>n>>k;
for(int i = 0;i<n-1;i++){
int a,b,c;cin>>a>>b>>c;
adj[a].push_back({b,c});
adj[b].push_back({a,c});
}
for(int r = 1;r<=n;r++){
timer = 0;
dfs(r,0);
build(1,1,n);
go(r,0,0);
int e = k;
long long all = 0;
while(e--){
int no = seg[1].second;
while(no!=r){
if(P[no].second==0){
break;
}
update(1,1,n,in[no],outt[no],-P[no].second);
all+=P[no].second;
P[no].second = 0;
no = P[no].first;
}
}
cout<<all<<endl;
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
604 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
348 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |