Pagini recente » Cod sursa (job #2186083) | Rezultatele filtrării | Cod sursa (job #2829761) | Rezultatele filtrării | Cod sursa (job #1202141)
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
typedef struct celula {
long long nod;
celula *next;
}*lista;
lista lda[300013];
long long i,n,t,a,b,nr;
void add(long long val, lista &p)
{
lista r= new celula;
r->nod=val;
r->next=p;
p=r;
}
void dfs ( long long val,long long a, long long &stramos)
{
++stramos;
if (stramos==a) cout<<val<<"\n";
else
if (stramos<a) {
for (lista r=lda[val];r;r=r->next)
if (r->nod!=0) dfs(r->nod,a,stramos);
else cout<<0<<"\n";
}
}
int main()
{
cin>>n>>t;
for (i=1;i<=n;++i) {
cin>>a;
add(a,lda[i]);
}
for (i=1;i<=t;++i){
cin>>a>>b;
long long stramos=-1;
dfs(a,b,stramos);
}
return 0;
}