Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <algorithm>using namespace std;int longDistance(vector<vector<int> > &node, int root, int &longPath, int preRoot){int maxDistance = 0;int maxPath = 0;int secondPath = 0;for(int i = 0; i < node[root].size(); i++){if(node[root][i] != preRoot){int path;maxDistance = max(maxDistance, longDistance(node, node[root][i], path, root));if(path + 1> maxPath){secondPath = maxPath;maxPath = path + 1;}else if(path + 1 > secondPath){secondPath = path + 1;}}}longPath = maxPath;return max(maxDistance, maxPath + secondPath);}int main(){int n;cin >> n;vector<vector<int> > node(n);