Cod sursa(job #494820)

Utilizator space.foldingAdrian Soucup space.folding Data 23 octombrie 2010 00:49:26
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>
#include <vector>
using namespace std;
int data[250001];

int main ()
{
	vector <vector<int>> v;
	FILE *in=fopen("stramosi.in", "r"), *out=fopen("stramosi.out", "w");
	int n, m, value, s1, s2;
	fscanf(in, "%d%d", &n, &m);
	for(int i=0; i<n; ++i)
		fscanf(in, "%d", data+i+1);

	v.push_back(vector<int>());
	for(int i=1; i<=n; ++i)
	{
		v.push_back(vector<int>());
		v[i].push_back(0);
		value=i;
		while(data[value])
		{
			v[i].push_back(data[value]);
			value=data[value];
		}
	}


	for(int i=0; i<m; ++i)
	{
		fscanf(in, "%d%d", &s1, &s2);
		if(v[s1].size()>s2)
			fprintf(out, "%d\n", v[s1][s2]);
		else
			fprintf(out, "0\n");
	}
	return 0;
}