Submission #1137072

#TimeUsernameProblemLanguageResultExecution timeMemory
1137072arijit_biswasTraffic (IOI10_traffic)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;

int n;
vector<int> p, s, d;
vector<vector<int>> g;
vector<int> subtreeSum;

void dfs(int node, int par) {
	subtreeSum[node] = p[node];
	for (auto &v : g[node]) {
		if (v != par) {
			dfs(v, node);
			subtreeSum[node] += subtreeSum[v];
		}
	}
}

bool check(int x) {
	int maxTraffic = 1e9;
	for (int i = 0; i < n; i++) {
		int temp = 0;
		for (auto &v : g[i]) {
			subtreeSum.assign(n, 0);
			dfs(v, i);
			// for (auto &x : subtreeSum) {
			// 	cout << x << " ";
			// }
			// cout << " -> " << subtreeSum[v] << endl;
			temp = max(temp, subtreeSum[v]);
		}
		maxTraffic = min(maxTraffic, temp);
		// cout << endl;
	}
	return maxTraffic <= x;
}

void solution() {
	cin >> n;
	p.resize(n);
	s.resize(n - 1);
	d.resize(n - 1);
	for (int i = 0; i < n; i++) {
		cin >> p[i];
	}
	for (int i = 0; i < n - 1; i++) {
		cin >> s[i];
	}
	for (int i = 0; i < n - 1; i++) {
		cin >> d[i];
	}
	g.resize(n);
	for (int i = 0; i < n - 1; i++) {
		g[s[i]].push_back(d[i]);
		g[d[i]].push_back(s[i]);
	}
	int low = 1, high = 1000, ans = high;
	while (low <= high) {
		int mid = low + (high - low) / 2;
		if (check(mid)) {
			ans = mid;
			high = mid - 1;
		} else {
			low = mid + 1;
		}
	}
	cout << ans << endl;
	// cout << check(30) << endl;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	solution();
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc2mdGns.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccgCubuW.o:traffic.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cc2mdGns.o: in function `main':
grader.cpp:(.text.startup+0xef): undefined reference to `LocateCentre(int, int*, int*, int*)'
collect2: error: ld returned 1 exit status