思路:
搜索策略:从根节点往下搜索,对非根节点搜索无意义,还会超时。只要对所有一个节点的所有子节点按照升序排序,那么搜索到的第一个长度最长的路径就是答案。记录路径:使用一个记录父节点(前驱节点)的数组,这样只要记录最长路径的末尾结点即可反推回整条路径
AC代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 100010;
vector<int> v[N], path;
int last, depth, root;
int n, pre[N];
void dfs(int val, int u) //节点值为val,第u层
{
if(u > depth) //如果路径长度增长,修正尾节点和深度(长度)
{
depth = u;
last = val;
}
for(int i = 0; i < v[val].size(); i ++ )
d