Submission #639984

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

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
typedef pair<ll,ll> pll;
typedef ld COMPTYPE;
//typedef complex<COMPTYPE> point;
 
#define IOS cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false);
#define FILEIOS(fn) freopen(fn".in", "r", stdin); freopen(fn".out", "w", stdout);
#define PI 3.14159265358979323846264338327950288419716939937510
#define xx real()
#define yy imag()
#define ff first
#define ss second
#define nl "\n"
#define bl " "
#define pb push_back

template<typename T>
bool chmax(T& val, T nval) { if(val < nval) {val=nval; return true;} return false;}
template<typename T>
bool chmin(T& val, T nval) { if(val > nval) {val=nval; return true;} return false;}

void DEBUGOUT() { cerr << '\n'; }
template<typename Head, typename... Tail>
void DEBUGOUT(Head H, Tail... T) { cerr << ' ' << H; DEBUGOUT(T...); }
#define DEBUG(...) cerr << "(" << #__VA_ARGS__ << "):";  DEBUGOUT(__VA_ARGS__)

void WRITEIN() { return; }
template<typename Head, typename... Tail>
void WRITEIN(Head& H, Tail&... T) { cin >> H; WRITEIN(T...); }
#define win(...) WRITEIN(__VA_ARGS__);

void WRITEOUT() { return; }
template<typename Head, typename... Tail>
void WRITEOUT(Head&& H, Tail&&... T) { cout << H; WRITEOUT(T...); }
#define wout(...) WRITEOUT(__VA_ARGS__);

const int N = 2e5+1;
const int INF = N*2;

int sz[N];
vector<pli> g[N];
vector<pli> vec[N];

int ans=INF;
int n;
ll k;

void dfs_sz(int v, int p) {
	sz[v] = 1;
	for(auto& [c,u] : g[v]) {
		if(p == u) continue;
		dfs_sz(u,v);
		sz[v] += sz[u];
	}
}

void dfs_hld(int v, int p, int keep) {
	int nextu=-1,maxsz=-1;
	ll nextc;

	for(auto& [c,u] : g[v]) {
		if(u == p) continue;
		if(maxsz < sz[u]) {
			maxsz = sz[u];
			nextu = u;
			nextc = c;
		}
	}

	for(auto& [c,u] : g[v]) {
		if(u == p || u == nextu) continue;
		dfs_hld(u,v,0);
	}

	if(nextu != -1) {
		dfs_hld(nextu,v,1);
		swap(vec[nextu], vec[v]); 
		for(auto& [c,sz] : vec[v]) {
			sz++;
			c += nextc;
			if(c==k) chmin(ans,sz);
		}
	}

	for(auto& [c,u] : g[v]) {
		if(u == p || u == nextu) continue;
		for(auto& [cc,sz] : vec[u]) {
			if(cc+c > k || sz+1 >= ans) continue;
			vec[v].pb({cc+c,sz+1});
			if(cc+nextc==k) chmin(ans,sz+1);
		}
	}

	vec[v].pb({0ll,0});

	/*
	DEBUG(v);
	for(auto& [c,sz] : g[v]) {
		DEBUG(c,sz);
	}
	*/
}

int32_t main() {
	IOS;

	int v,u;
	ll c;
	win(n,k);

	for(int i = 1; i < n; i++) {
		win(v,u,c);
		g[v].pb({c,u});
		g[u].pb({c,v});
	}

	dfs_sz(0,0);
	dfs_hld(0,0,1);

	if(ans == INF) ans=-1;
	wout(ans,nl);
}

Compilation message (stderr)

race.cpp: In function 'void dfs_hld(int, int, int)':
race.cpp:97:9: warning: 'nextc' may be used uninitialized in this function [-Wmaybe-uninitialized]
   97 |    if(cc+nextc==k) chmin(ans,sz+1);
      |       ~~^~~~~~
/usr/bin/ld: /tmp/ccOopBEh.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc8fQDfi.o:grader.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc8fQDfi.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