Господа кодфорцесеры, вот задачка: Расследование
Решаю самым банальным алгоритмом так:
#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 давать. Подскажите пожалуйста в чем проблема?