#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
vector<int> w;
bool proveri(int dist){
int cnt=0ll;
int i=0ll;
int sum=0ll;
while(i<n-1ll){
if(sum+w[i]>dist){
sum=0ll;
cnt++;
if(cnt%2==0)i++;
}
else{
i++;
sum+=w[i];
}
}
cnt++;
if((cnt+1)/2>k)return false;
return true;
}
int32_t main()
{
cin>>n>>k;
w.resize(n-1);
for(int i=0;i<n-1;i++){
int a,b;
cin>>a>>b;
cin>>w[i];
}
int maxedge=0ll;
int l=0ll;
int r=100000000000000000ll;
while(l<=r){
int mid=l+(r-l)/2ll;
//cout<<mid<<endl;
if(proveri(mid))r=mid-1ll;
else l=mid+1ll;
}
cout<<l<<endl;
int cnt=0ll;
int i=0ll;
int sum=0ll;
while(i<n-1ll){
if(sum+w[i]>l){
sum=0ll;
cnt++;
if(cnt%2==0)i++;
else cout<<i+1<<' ';
}
else{
i++;
sum+=w[i];
}
}
if(cnt%2==0)cout<<n<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |