Pagini recente » Cod sursa (job #1711964) | Rating London Powell (gasengineer047) | Cod sursa (job #420083) | Cod sursa (job #561079) | Cod sursa (job #192112)
Cod sursa(job #192112)
#include<stdio.h>
FILE *f=fopen("stramosi.in","r"),
*g=fopen("stramosi.out","w");
int a[250099][30],i,j,n,k,m,p,q,r;
char c[1750010];
void citt()
{
fgets(c,1750010,f);
int i,au=0,n1=0,au1,au2;
for(i=0;c[i]!='\0';++i)
{
if(c[i]>='0')
{
au1=au<<3;
au2=au<<1;
au=au1+au2+c[i]-'0';
}
else
{
a[++n][0]=au;
au=0;
}
}
}
void cit(int &p,int &q)
{
fgets(c,100,f);
p=q=0;
int i,j,q1,q2;
for(i=0;c[i]>='0';++i)
{
q1=q<<3;
q2=q<<1;
q=q1+q2;
q+=c[i]-'0';
}
for(j=i+1;c[j]>='0';++j)
p=p*10+c[j]-'0';
}
int main()
{ fscanf(f,"%d %d",&n,&m);
citt();
r=n;
k=17;
for(i=1;i<=k;++i)
for(j=1;j<=n;++j)
{ a[j][i]=a[a[j][i-1]][i-1];
}
for(i=1;i<=m;++i) { cit(p,q);
k=0;r=q;
while(p){ if(p&1) r=a[r][k];
p>>=1;
++k;
}
fprintf(g,"%d\n",r);
}
fclose(f);
fclose(g);
return 0;
}