Cod sursa(job #1293881)

Utilizator dan89Stan Alexandru dan89 Data 16 decembrie 2014 18:28:11
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

int find() {
	return 0;
}

int main() {

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

	int n,m;

	in>>n>>m;

	int stramosi[100], ancest[100][100], increment[100];
	bool ansoa[100];

	for(int i = 1; i <= n; i++) {
		in >> stramosi[i];
		ancest[i][1] = stramosi[i]; 
		if(stramosi[i] == 0)
			ansoa[i] = true;
		increment[i]++;
	}

	bool x = false,c;

	while(!x) {
		c = false;
		for(int i =1; i<=n; i++) {
			if(!ansoa[i]){
				c = true;
				for(int j=1; j<= increment[stramosi[i]]; j++) {
					ancest[i][j+1] = ancest[stramosi[i]][j];
					increment[i]++;
				}
				if(ansoa[stramosi[i]]) 
					ansoa[i] = true;  
			}
		}
		if(!c)
			x = true;
	}

	// for(int i =1; i<=n; i++) {
	// 	for(int j=1;j<=n; j++) {
	// 		cout<<ancest[i][j]<<" ";
	// 	}
	// 	cout<<endl;
	// }
	int p,q;
	for(int i = 1; i<= m; i++) {
		in >> p >> q;
		out<<ancest[p][q]<<endl;
	}
	in.close();
	out.close();
	return 0;
}