제출 #492951

#제출 시각아이디문제언어결과실행 시간메모리
4929511ne경주 (Race) (IOI11_race)C++14
컴파일 에러
0 ms0 KiB

#include "race.h"

#include<bits/stdc++.h>
using namespace std;
vector<set<pair<int64_t,int64_t>>>adj(1e6);
int64_t k=0;
vector<int64_t>sub(1e6,0);
vector<int64_t>ans(1e6,0);
vector<int64_t>aux(1e6,0);
int64_t answer = int64_t_MAX;
int64_t kk = -1;
int64_t bookmark = 0;
void dfs (int64_t cur,int64_t par,int64_t cost,int64_t len,int64_t fill){
	if (fill){
		if (aux[cost]<bookmark){
			aux[cost] = bookmark;
			ans[cost] = len;
		}
		else if (len<ans[cost]){
			ans[cost] = len;
			aux[cost] = bookmark;
		}
	}
	else{
		if (aux[kk - cost]==bookmark){
			if (len + ans[kk - cost]<answer){
				answer = min(answer,len + ans[kk-cost]);
			}
			if (cost ==kk){
				answer = min(answer,len);
			}
		}
	}
	for (auto x:adj[cur]){
		if (x.first!=par){
			dfs(x.first,cur,cost + x.second,len + 1,fill);
		}
	}
}
void getsub(int64_t u,int64_t par){
	sub[u]=1;
	k++;
	for (auto x:adj[u]){
		if (x.first!=par){
			getsub(x.first,u);
			sub[u]+=sub[x.first];
		}
	}
}
int64_t getcentroid(int64_t u,int64_t par){
	for (auto x:adj[u]){
		if (x.first!=par){
			if (sub[x.first]>k/2){
				return getcentroid(x.first,u);
			}
		}
	}
	return u;
}
void decomposition(int64_t u,int64_t par){
	k = 0;
	getsub(u,u);
	int64_t c = getcentroid(u,u);
	if (par==-1){
		par=c;
	}
	bookmark++;
	for (auto x:adj[c]){
		dfs(x.first,c,x.second,1,0);
		dfs(x.first,c,x.second,1,1);
	}
	for (auto x:adj[c]){
		adj[x.first].erase({c,x.second});
		//adj[c].erase(x);
		decomposition(x.first,c);
	}
}
void build(){
	decomposition(0,-1);
}
int64_t best_path(int64_t N, int64_t K, int64_t H[][2], int64_t L[])
{
	kk = K;
 	for (int64_t i = 0;i<N-1;++i){
 		adj[H[i][0]].insert({H[i][1],L[i]});
 		adj[H[i][1]].insert({H[i][0],L[i]});
 	}
 	build();
 	if (answer==int64_t_MAX){
 		return -1;
 	}
 	return answer;
}


컴파일 시 표준 에러 (stderr) 메시지

race.cpp:11:18: error: 'int64_t_MAX' was not declared in this scope; did you mean 'int64_t'?
   11 | int64_t answer = int64_t_MAX;
      |                  ^~~~~~~~~~~
      |                  int64_t
race.cpp: In function 'int64_t best_path(int64_t, int64_t, int64_t (*)[2], int64_t*)':
race.cpp:90:15: error: 'int64_t_MAX' was not declared in this scope; did you mean 'int64_t'?
   90 |   if (answer==int64_t_MAX){
      |               ^~~~~~~~~~~
      |               int64_t