Pagini recente » Cod sursa (job #1208559) | Cod sursa (job #1857774) | Cod sursa (job #334341) | Cod sursa (job #183690) | Cod sursa (job #391295)
Cod sursa(job #391295)
#include <fstream>
#include <vector>
#include <bitset>
#define DIM 250005
#define pb push_back
using namespace std;
ifstream fin ("stramosi.in"); // citire + scriere cu streamuri pt eficienta (cica)
ofstream fout ("stramosi.out");
struct tip
{
unsigned int x:19;
}__attribute__ ((packed));
int N, M, i, p, q , a;
tip st [DIM];
vector <int> sol [DIM];
int G [DIM];
bitset <DIM>viz;
void dfs (int node, int lev) {
st [++lev].x = node;
if (!viz [G [node]])
{
viz [G [node]] = true;
dfs (G [node], lev);
}
-- lev;
for (i = lev; i >= 1; i --)
sol [node].pb (st[i].x);
}
int main () {
int a,t, j;
fin >> N >> M;
for (i = 1; i <= N; i++) {
fin >> a;
G [i] = a;
}
for (i = 1; i <= N; i++)
if (!viz [i])
dfs (i, 0);
for (i = 1; i <= M; i++)
{
fin >> q >> p;
if (q >= DIM) fout << 0 << "\n";
else
{
for (t = 0, j = 0; j < sol [q].size (); j++)
if (j == p - 1)
{
fout << sol [q][j] << "\n";
t = 1;
break;
}
if (t == 0) fout << 0 <<"\n";
}
}
return 0;
}