Pagini recente » Cod sursa (job #2053193) | Cod sursa (job #1440868) | Cod sursa (job #1061785) | Cod sursa (job #2300899) | Cod sursa (job #953129)
Cod sursa(job #953129)
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,i,j,q,nr,t,x,y,tata[100007],viz[100007];
bool ok;
char s[1000007],c[6];
void citire()
{
freopen("lca.in","r",stdin);
freopen("lca.out","w",stdout);
scanf("%d %d\n",&n,&m);
gets(s);
for(i=1;i<n;i++){
while(s[j]!=' ' && s[j])nr=nr*10+s[j]-'0',j++;
tata[i+1]=nr;
j++;
nr=0;
}
}
int main()
{
citire();
for(i=1;i<=m;i++){
scanf("%d %d",&x,&y);
if(x!=y)ok=true;
viz[x]=i;
viz[y]=i;
while(ok==true){
if(x!=0){
x=tata[x];
if(viz[x]==i)ok=false;
viz[x]=i;
}
if(y!=0){
y=tata[y];
if(viz[y]==i && ok==true)ok=false,x=y;
viz[y]=i;
}
}
printf("%d\n",x);
}
return 0;
}