Submission #433027

#TimeUsernameProblemLanguageResultExecution timeMemory
433027GurbanRace (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int N = 1e6+5;
const int maxn=2e5+5;
int cnt[N],ans = 1e9;
int sub[maxn],k;
bool done[maxn];
vector<int>v;
vector<pair<int,int>>E[maxn];

void dfs(int nd,int pr){
	sub[nd] = 1;
	for(auto i : E[nd]) if(i.first != pr and !done[i.first]) dfs(i.first,nd), sub[nd] += sub[i.first];
}

int cent(int nd){
	int sz = sub[nd];
	while(1){
		pair<int,int>mx = {0,0};
		for(auto i : E[nd]){
			if(!done[i.first] and sub[i.first] < sub[nd] and sub[i.first] > mx.first) mx = {sub[i.first],i.first};
		}
		if(mx.first * 2 <= sz) return nd;
		nd = mx.second;
	}
}

void calc(int nd,int pr,int lvl,ll ds){
	if(ds <= k){
		assert(k-ds < N and k-ds >= 0);
		ans = min(ans,cnt[k-ds] + lvl);
	}
	for(auto i : E[nd])
		if(i.first != pr and !done[i.first]) calc(i.first,nd,lvl+1,ds+i.second);
}

void put(int nd,int pr,int lvl,ll ds){
	if(ds <= k){
		assert(ds < N and ds >= 0);
		cnt[ds] = min(cnt[ds],lvl);
		v.push_back(ds);
	}
	for(auto i : E[nd])
		if(i.first != pr and !done[i.first]) put(i.first,nd,lvl+1,i.second+ds);
}

void f(int nd){
	dfs(nd,-1);
	int cen = cent(nd);
	done[cen] = 1;
	sub[cen] = sub[nd];
	// cout<<cen<<' ';
	for(auto i : E[cen]){
		if(!done[i.first]){
			// if(cen == 1) cout<<i.first<<' ';
			calc(i.first,cen,1,i.second);
			put(i.first,cen,1,i.second);
		}
	}
	for(auto i : v) cnt[i] = 1e9;
	v.clear();
	for(auto i : E[cen])
		if(!done[i.first]) f(i.first);
}

int best_path(int n,int K,int h[][2],int l[]){
	k = K;
	for(int i = 0;i < n-1;i++){
		E[h[i][0]].push_back({h[i][1],l[i]});
		E[h[i][1]].push_back({h[i][0],l[i]});
	}
	for(int i = 1;i < N;i++) cnt[i] = 1e9;
	f(0);
	// cout<<'\n';
	if(ans == 1e9) ans = -1;
	return ans;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	int n,k;
	cin >> n >> k;
	int H[n-1][2],L[n-1];
	for(int i = 0;i < n-1;i++) cin >> H[i][0] >> H[i][1] >> L[i];
	cout<<best_path(n,k,H,L);
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc9vnYpg.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccg1TKei.o:grader.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status