Submission #414468

#TimeUsernameProblemLanguageResultExecution timeMemory
414468TemmieHighway Tolls (IOI18_highway)C++17
0 / 100
14 ms1008 KiB
#include "highway.h"
#include <bits/stdc++.h>

typedef long long ll;

//namespace Q {
	//int N = 4;
	//std::vector <int> U = { 0, 0, 0 };
	//std::vector <int> V = { 1, 2, 3 };
	//int A = 1, B = 2;
	//int s = 2, e = 3;
//};

//ll ask(std::vector <int> v) {
	//ll ret = 
	//return 0;
//}

//void answer(int s, int t) {
	//std::cerr << "answered: (" << s << ", " << t << ")" << std::endl;
	//std::cerr << "answer was(" << Q::s << ", " << Q::e << ")" << std::endl;
//}

std::vector <std::vector <int>> g;

int dfs(int B, std::vector <int>& v, int length, int node = 0, int par = -1, int d = 0) {
	v[node] = 1;
	if (d == length) {
		ll now = ask(v);
		if (now == ll(B) * ll(length)) return node;
		return -1;
	}
	for (int x : g[node]) if (x != par) {
		int now = dfs(B, v, length, x, node, d + 1);
		if (now != -1) return now;
	}
	v[node] = 0;
	return -1;
}

void find_pair(int n, std::vector <int> U, std::vector <int> V, int A, int B) {
	g.resize(n);
	for (int i = 0; i < n - 1; i++) {
		g[U[i]].push_back(V[i]);
		g[V[i]].push_back(U[i]);
	}
	std::vector <int> v(n, 0);
	int length = ask(v) / ll(A);
	answer(1, dfs(B, v, length) + 1);
}

//int main() {
	
//}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...