Submission #984126

# Submission time Handle Problem Language Result Execution time Memory
984126 2024-05-16T10:25:42 Z stdfloat Race (IOI11_race) C++17
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define ff  first
#define ss  second
#define pii pair<int, int>

int k, mn = INT_MAX;

vector<vector<int>> dp;

vector<vector<pii>> E;

void dfs(int x, int p = - 1) {
	dp[x][0] = 0;

	vector<pii> v[k + 1];
	for (auto [i, w] : E[x]) {
		if (i == p) continue;

		dfs(i, x);

		for (int j = w; j <= k; j++) {
			if (dp[i][j - w] == INT_MAX) continue;

			if ((int)v[j].size() < 2) v[j].push_back({dp[i][j - w] + 1, i});
			else if (dp[i][j - w] + 1 < v[j][1].ff) v[j][1] = {dp[i][j - w] + 1, i};
			
			if ((int)v[j].size() == 2 && v[j][0].ff > v[j][1].ff) swap(v[j][0], v[j][1]);

			dp[x][j] = min(dp[x][j], dp[i][j - w] + 1);
		}
	}

	if (!v[k].empty()) mn = min(mn, (int)v[k][0].ff);
	for (int i = 1; i < k; i++) {
		if (v[i].empty() || v[k - i].empty()) continue;

		if (v[i][0].ss != v[k - i][0].ss) mn = min(mn, v[i][0].ff + v[k - i][0].ff);
		else if (1 < (int)v[k - i].size()) mn = min(mn, v[i][0].ff + v[k - i][1].ff);
	}
}

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

	int n;
	cin >> n >> k;

	E.assign(n, {});
	for (int i = 1; i < n; i++) {
		int x, y, l;
		cin >> x >> y >> l;

		E[x].push_back({y, l});
		E[y].push_back({x, l});
	}

	dp.assign(n, vector<int>(k + 1, INT_MAX));
	dfs(0);

	cout << (mn == INT_MAX ? -1 : mn);
}

Compilation message

/usr/bin/ld: /tmp/cci3Xhu9.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccysMEda.o:grader.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccysMEda.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