hiho week 248 register

Ended

Participants:125

Verdict:Accepted
Score:100 / 100
Submitted:2019-04-01 19:32:20

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX