Submission #1208951

#TimeUsernameProblemLanguageResultExecution timeMemory
1208951MasterDebaterRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+5;
int n,k,ai,bi,ci,mxd,par[N],sz[N],len[N];
ll ans;
vector<int>v[N];
bool bio[N];
int precompute(int node,int parent){
	sz[node]=1;
	for(int i=0;i<(int)v[node].size();i++)if(!bio[v[node][i]] and v[node][i]!=parent)sz[node]+=precompute(v[node][i],node);
	return sz[node];
}
void solve(int node,int parent,int depth,bool b){
	if(depth>k)return;
	mxd=max(mxd,depth);
	if(b)len[depth]++;
	else ans+=len[k-depth];
	for(int i=0;i<(int)v[node].size();i++){
		if(v[node][i]!=parent and !bio[v[node][i]])
			solve(v[node][i],node,depth+1,b);
	}
	return;
}
int FindCentroid(int node,int parent,int vel){
	for(int i=0;i<(int)v[node].size();i++)if(v[node][i]!=parent and !bio[v[node][i]])
		if(sz[v[node][i]]>vel/2)return FindCentroid(v[node][i],node,vel);
	return node;
}
void CentroidDecompostition(int node){
	precompute(node,-1);
	int centroid=FindCentroid(node,-1,sz[node]);
	mxd=0;
	len[0]=1;
	for(int i=0;i<(int)v[centroid].size();i++)if(!bio[v[centroid][i]]){
		solve(v[centroid][i],centroid,1,0);
		solve(v[centroid][i],centroid,1,1);
	}
	for(int i=0;i<=mxd;i++)len[i]=0;
	node=centroid;
	bio[node]=1;
	for(int i=0;i<(int)v[node].size();i++) {
		int child=v[node][i];
		if (bio[child])continue;
		CentroidDecompostition(child);
	}
	return;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>k;
	for(int i=0;i<n;i++)par[i]=-1;
	for(int i=1;i<n;i++){
		cin>>ai>>bi>>ci,ai--,bi--;
		v[ai].push_back(bi);
		v[bi].push_back(ai);
	}
	CentroidDecompostition(0);
	cout<<ans<<'\n';
	return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccJy8Phj.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccFqnHyv.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccJy8Phj.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status