Pagini recente » Cod sursa (job #32796) | Cod sursa (job #2266102) | Cod sursa (job #68782) | Cod sursa (job #3004618) | Cod sursa (job #2139275)
#include <iostream>
#include <fstream>
/// LCA de 30p cu urc in sus
using namespace std;
ifstream f("lca.in");
ofstream g("lca.out");
int n, m, a[100005], niv[100005], depth[100005];
void df(int i, int lev)
{
int j;
niv[i]=lev;
for (j=1; j<=n; j++)
if (a[j]==i)
df(j, lev+1);
}
int main()
{
int i, x, y;
f>>n>>m;
for (i=2; i<=n; i++) f>>a[i];
df(1, 0);
for (i=1; i<=m; i++)
{
f>>x>>y;
while (x!=y)
if (niv[x]>niv[y]) x=a[x];
else y=a[y];
g<<x<<"\n";
}
return 0;
}