Cod sursa(job #2570075)

Utilizator michael_blazemihai mihai michael_blaze Data 4 martie 2020 14:58:22
Problema Lowest Common Ancestor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

std :: ifstream fin ("lca.in");
std :: ofstream fout("lca.out");

int n, m;

int main() {
	int* parentArray;
	fin >> n >> m;

	parentArray = new int[n + 1];

	parentArray[1] = -1;

	for (int i = 2;i <= n;i ++) {
		fin >> parentArray[i];
	}

	int x, y;

	for (int i = 1;i <= m;i ++) {
		fin >> x >> y;
		
		while (parentArray[x] != parentArray[y] and parentArray[y] != x and parentArray[x] != y) {
			x = parentArray[x];
			y = parentArray[y];
		}
		
		if (parentArray[y] == x)
			fout << x << std :: endl;
		else if (parentArray[x] == y)
			fout << y << std :: endl;
		else
			fout << parentArray[x] << std :: endl;
	}


	fin.close();
	fout.close();
	return 0;
}