Cod sursa(job #2570045)

Utilizator michael_blazemihai mihai michael_blaze Data 4 martie 2020 14:49:45
Problema Lowest Common Ancestor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 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;
		if (parentArray[y] == x) {
			fout << x << std :: endl;
		} else if (parentArray[x] == y)
			fout << y << std :: endl;
		else {
			while (parentArray[x] != parentArray[y]) {
				x = parentArray[x];
				y = parentArray[y];
			}
			fout << parentArray[x] << std :: endl;
		}
	}


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