Cod sursa(job #2503347)

Utilizator Iulia25Hosu Iulia Iulia25 Data 2 decembrie 2019 21:35:22
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");

int n, m, x, y, k;
int tata[250005][20];

inline int find_daddy(int nod, int sus)	{
	int x = 0;
  while (sus)	{
		++x;
		if (sus & 1)
			nod = tata[nod][x];
		sus >>= 1;
  }
  return nod;
}

int main()	{
  fin >> n >> m;
  for (int i = 1; i <= n; ++i)
		fin >> tata[i][1];
	bool gata = false;
	for (int i = 1; !gata; ++i)	 {
		gata = true;
		for (int j = 1; j <= n; ++j)	{
			tata[j][i + 1] = tata[tata[j][i]][i];
			if (tata[j][i + 1])
				gata = false;
		}
	}
	while (m--)	 {
    fin >> x >> y;
    k = find_daddy(x, y);
    fout << k << '\n';
	}
	return 0;
}