特斯拉8月27第三题
#include<bits/stdc++.h>
using namespace std;
int maxlen=INT_MIN;
int dfs(const string& s, const vector<vector<int>>& grid, int no)
{
int l1 = 0, l2 = 0, t;
int n = s.size();
for (auto& cno : gird[no])
{
if (s[cno] == s[no] && n - cno < maxlen) continue;
t = dfs(s, grid, cno);
if (s[cno] == s[no]) continue;
if (t >= 11)
{
l2 = l1;
l1 = t;
}
else if (t > l2) l2 = t;
}
if (l1 + l2 + 1 > maxlen) maxle = max(maxlen, l2 + l1 + 1);
return l1 + 1;
}
int solution(string &S, vector<int>& A)
{
int n = A.size()
if (n < 2) return 0;
vector<vector<int>> grid;
grid.resize(n);
//0是根节点跳过
for (int i = 1; i < n; i++)
grid[A[i]].push_back(i);
dfs(S, grid, 0)
return res;
}#秋招##校招#
using namespace std;
int maxlen=INT_MIN;
int dfs(const string& s, const vector<vector<int>>& grid, int no)
{
int l1 = 0, l2 = 0, t;
int n = s.size();
for (auto& cno : gird[no])
{
if (s[cno] == s[no] && n - cno < maxlen) continue;
t = dfs(s, grid, cno);
if (s[cno] == s[no]) continue;
if (t >= 11)
{
l2 = l1;
l1 = t;
}
else if (t > l2) l2 = t;
}
if (l1 + l2 + 1 > maxlen) maxle = max(maxlen, l2 + l1 + 1);
return l1 + 1;
}
int solution(string &S, vector<int>& A)
{
int n = A.size()
if (n < 2) return 0;
vector<vector<int>> grid;
grid.resize(n);
//0是根节点跳过
for (int i = 1; i < n; i++)
grid[A[i]].push_back(i);
dfs(S, grid, 0)
return res;
}#秋招##校招#