Pagini recente » Cod sursa (job #3319012) | Cod sursa (job #3343223) | Cod sursa (job #1268205) | Cod sursa (job #3309632) | Cod sursa (job #3355970)
#include <fstream>
#include <vector>
const int NMAX=2.5e5+8;
int n,q;
std::vector<int> g[NMAX];
int anc[22][NMAX];
int bl(int nod,int niv) {
int z=0;
while(niv) {
if(niv&1) {
nod=anc[z][nod];
}
z++;
niv>>=1;
}
return nod;
}
int main() {
std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");
std::ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> q;
int rt=0;
for(int i=1; i<=n; i++) {
fin >> anc[0][i];
if(!anc[0][i]) {
rt=i;
}
}
for(int i=1; (1<<i)<=n; i++) {
for(int j=1; j<=n; j++) {
anc[i][j]=anc[i-1][anc[i-1][j]];
}
}
while(q--) {
int nod,z;
fin >> nod >> z;
fout << bl(nod,z) << '\n';
}
return 0;
}