Easy_'s blog

By Easy_, 10 years ago, In Russian

Господа кодфорцесеры, вот задачка: Расследование

Решаю самым банальным алгоритмом так:

#include <fstream>

#define LL long long
#define MAXN 1e6 + 1

using namespace std;

fstream in("input.txt"), 
		out("output.txt", std::ios::out);

int G[101][101], N, t, i, k;

int Parent(int u)
{
	if(u-- == 1)
		return 1;
	int _t = 0;
	for(; !G[u][_t]; _t++);
	return _t + 1;
}

int Depth(int u)
{
	int k = 0;
	while(u != 1) 
		u = Parent(u), k++;
	return k;
}

int main()
{
	for(in >> N >> _a >> _b; in >> t; i++)
		G[t - 1][i + 1] = G[i + 1][t - 1] = 1;
	
	int ha = Depth(_a), hb = Depth(_b);

	while(ha != hb)
		if(ha > hb)
			_a = Parent(_a), ha--;
		else
			_b = Parent(_b), hb--;
	
	while(_a != _b)
		_a = Parent(_a), _b = Parent(_b);

	out << _a;

	return 0;
}

Сложность O(h)

но получаю TL в 11 тесте, хотя максимальное значение h 29999

вроде не должно TL давать. Подскажите пожалуйста в чем проблема?

  • Vote: I like it
  • +10
  • Vote: I do not like it