Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <cstdio>using namespace std;pair<int, int> solve(int loc, vector<int>* data[]) {vector<pair<int, int> > subproblems;pair<int, int> result;int maxSolo = 0;int maxDuo = 0;for (int i = 0; i < data[loc]->size(); i++) {subproblems.push_back(solve(data[loc]->at(i), data));}for (int i = 0; i < subproblems.size(); i++) {if (subproblems.at(i).first > maxDuo) {maxDuo = subproblems.at(i).first;}if (subproblems.at(i).second + 1 > maxSolo) {maxSolo = subproblems.at(i).second + 1;}for (int j = i + 1; j < subproblems.size(); j++) {if (subproblems.at(i).second + subproblems.at(j).second + 2 > maxDuo) {maxDuo = subproblems.at(i).second + subproblems.at(j).second + 2;}}}return pair<int, int>(maxDuo, maxSolo);}int main(int argc, const char * argv[]) {