Pagini recente » Statistici Ana Floares (anafloares) | Rating stefan andrei (seful_stefan) | Cod sursa (job #3366201) | Cod sursa (job #3365638) | Cod sursa (job #3366243)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lca.in");
ofstream fout("lca.out");
int n,m,up[100010][20],dfss[100010],dfse[100010],cnt;
list<int>ofs[100010];
void dfs(int x)
{
cnt++;
dfss[x] = cnt;
for(int son:ofs[x])
{
dfs(son);
}
cnt++;
dfse[x] = cnt;
}
bool isa(int a,int b)
{
return (dfss[a] <= dfss[b] && dfse[b] <= dfse[a]);
}
int main()
{
fin >>n >>m;
for(int i = 1;i <= n-1;i++)
{
int x;
fin >>x;
up[i+1][0] = x;
ofs[x].push_back(i+1);
}
up[1][0] = 1;
dfs(1);
for(int i = 1;i <= 18;i++)
{
for(int x = 1;x <= n;x++)
{
up[x][i] = up[up[x][i-1]][i-1];
}
}
fout <<isa(2,8);
return 0;
}