Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <vector>#include <iostream>using namespace std;int N, M, K;vector<int> layer_size;vector<vector<int>> nodes;vector<int> leaves;vector<vector<int>> leaves_dist;vector<int> child;vector<int> parent;int get_dist(int m, int n) {int d2m = 0, d2n = 0;while (child[m] != -1) {m = child[m];d2m++;}while (child[n] != -1) {n = child[n];d2n++;}int im, in;for (int i = 0; i < leaves.size(); i++) {if (m == leaves[i]) im = i;if (n == leaves[i]) in = i;}return leaves_dist[im][in] - d2m - d2n;